abstract抽象类
一、抽象类
- abstract修饰符可以用来修饰方法和类,如果修饰方法,那么该方法为抽象方法;如果修饰类,则该类为抽象类
- 抽象类中可以没有修饰方法,但抽象方法必须在抽象类中
- 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的
- 抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的
- 子类继承抽象类,那么必须要实现抽象类的所有抽象方法,否则该子类也要声明为抽象类
二、实例演练
- 定义一个抽象类
- 抽象方法只有方法名,没有方法体,否则报错
//抽象类
public abstract class Action {//普通方法public void run(){System.out.println("run");}//抽象方法//abstract,抽象方法,只有方法名,没有方法的实现public abstract void fly();public abstract void eat();public static void main(String[] args) {//Action action=new Action(){} 报错,必须重写所有的抽象方法Action action=new Action(){//实现抽象类中的所有抽象方法@Overridepublic void fly() {System.out.println("fly");}@Overridepublic void eat() {}};action.fly();action.run();}
}
运行结果为:
fly
run
- 定义一个非抽象类子类继承抽象类
- 开始时报错,因为还为重写Action所有的抽象方法:
- 当重写了Action所有的抽象方法后正确运行(Alt + Insert -> override 快捷方式重写):
//抽象类的所有方法,继承了它的子类都必须要实现它的所有抽象方法,除非子类也是抽象类
public class B extends Action{//必须重新所有的抽象方法,否则报错@Overridepublic void fly() {}@Overridepublic void eat() {}
}
- 定义一个抽象类子类
- 开始时并未报错,因为子类C也是抽象类,所以需要在子类的子类中重写父类的所有重写方法
public abstract class C extends Action{Action action=new Action() {@Overridepublic void fly() {}@Overridepublic void eat() {}}
}
- 重写类存在构造器
public abstract class Action {//构造器public Action() {}
}
三、总结
抽象类的特点:
- 不能new这个抽象类,只能靠子类去实现它:约束
- 抽象类中可以写普通方法
- 抽象方法必须在抽象类中
- 子类继承抽象类,那么必须要实现抽象类的所有抽象方法
abstract抽象类相关推荐
- 继承extends ,this super final 关键字,abstract抽象类,override方法重写
继承extends 私有成员不能被继承 总结:子类方法中,使用变量的原则是:就近原则 1 package review06; 2 /* 3 私有成员不能被继承 4 子类和父类有同名的成员变量:在子类 ...
- JAVA入门级教学之(abstract抽象类)
目录 JAVA入门级教学之(abstract抽象类) 1.如何定义抽象类? 2.抽象类无法被实例化 3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的 4.抽象类中可 ...
- 小白Java学习之路(abstract抽象类,final,接口,equals)
常见面试题 final修饰静态常量进过方法 final 修饰的基本数据类型变量是无法进行修改的 final 修饰的引用类型的变量 只保证地址不变 对象中的内容可以发生改变 public class T ...
- abstract(抽象类)与interface(接口)的区别
文章目录 前言 一.abstract(抽象类) 1.用abstract关键字修饰方法 1.用abstract关键字修饰类 二.interface(接口) 总结 前言 abstract(抽象类)与int ...
- java抽象类关键字_Java之关键字abstract(抽象类与抽象方法)
/* * abstract关键字的使用 * 1.abstract:抽象的 * 2.abstract可以用来修饰的结构:类.方法 * * 3. abstract修饰类:抽象类 * > 此类不能实例 ...
- extends 抽象方法_关于abstract抽象类的理解
abstract: 抽象类不能被实例化(new),包含属性.方法.构造器(此构造器不用来初始化实例,只用来被子类调用,其构造函数是提供给子类创建对象的时候初始化父类的属性的),故只能被继承.抽象中用的 ...
- c# abstract抽象类与继承类子类的构造函数_base
http://blog.itpub.net/9240380/viewspace-718054/ http://blog.163.com/cloud_thegreat/blog/static/10367 ...
- 【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)
啥是抽象类?抽象类是用来干嘛的? 上层简单总结 所谓抽象类,就是把一些事物的共性总结起来,封装在一个抽象类当中从而形成一个模板,供子类进行继承并实现.子类总体上会保留抽象类的行为方式,并且在父类的基础 ...
- 1-10 Java 继承、protected和abstract抽象类
文章目录 1.继承 1)概念 2)代码例子 2.重写 1) 业务背景 2)代码实现 3)代码说明 3.抽象类,抽象方法 1)业务场景 2)abstract,抽象的 4.protected 修饰符 1. ...
- 44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法
作者:孙玉昌,昵称[一一哥],另外[壹壹哥]也是我哦 千锋教育高级教研员.CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知, ...
最新文章
- camera数字降噪(DNR)
- Science发现了改变情绪的大脑受体
- Linux多线程实践(8) --Posix条件变量解决生产者消费者问题
- 现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)...
- python3与Beautiful Soup库
- CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)
- Spark入门(十四)之分组求最大值
- 调试一个Ext打开的window窗口内嵌Iframe的form提交问题
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
- web漏洞扫描器-awvs
- 网页数据实时更新的三种简单方法
- 2022-2028年中国飞机电子飞行包(EFB)行业市场竞争状况及发展趋向分析报告
- 【区块链基础】2——BTC区块结构
- 苹果计算机如何显示错误,科普电脑打开苹果手机视频教程及Apple ID验证失败发生未知错误怎么解决...
- 分享嵌入式开发使用过程中遇到的几个问题(MQX4.2,IAR,Kinetis K66)
- 华为Vo5G技术GC方式下引入G
- 【论文】【ACL2018】Neural Document Summarization by Jointly Learning to Score and Select Sentences
- Web渗透 不断更新
- 时间序列预测:指数平滑法及python实现
- PHP的学习笔记 (php的基础语法)