1 概述
对方法,不断的向上抽取,只抽取方法的声明,不抽取方法的具体内容
既然功能定义不了内容,就直接 分号 ;
结束,不用大括号
void method();
这种函数,没有具体内容,用 abstract 标识
abstract void method();
抽象函数所在的类,也必须标记为抽象的
2 特点
1 方法只有声明,没有实现时,该方法就是抽象方法,需要被 abstract
修饰。抽象方法必须定义在抽象类中,该类也必须被 abstract
修饰
2 抽象类不可以被实例化 — 调用抽象方法,没有意义
3 抽象类必须 由其子类,覆盖了所有的抽象方法后,该子类才可以实例化,否则这个子类还是抽象类
3 细节
1 抽象类中有构造函数吗
有,用于给子类对象进行初始化
2 抽象类可以不定义抽象方法吗
可以,但是很少见,因为目的就是不让该类创建对象
AWT 的适配器对象就是这种类,通常这个类的方法有方法体,但是却没有内容
abstract class Demo{ void show1() {} void show2() {} }
3 抽象关键字不可以和哪些关键字共存
private
不行,抽象方法需要被覆盖,private
,子类无法访问
static
不行,静态不需要对象,抽象方法运行没意义,需要创建对象
final
不行,final
不能被覆盖,abstract
就是为了覆盖的
4 抽象类和一般类的异同点
相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
不同点:
1,一般类有足够的信息描述事物。
抽象类描述事物的信息有可能不足。
2,一般类中不能定义抽象方法,只能定非抽象方法。
抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3,一般类可以被实例化。
抽象类不可以被实例化。
5 抽象类一定是个父类吗
是的,因为需要子类覆盖其方法后,才可以对子类实例化