抽象类作为数据类型,创建一个抽象类型的数组:
abstract class Fruit{};
new Fruit[10];
这时抽象类Fruit并没有创建对象,即没有实例化
抽象类可以有构造方法,接口中不能有构造方法。
抽象:abstract
1、特点:
1)抽象类不能实例化
2)一定存在子类,待子类实例化
3)抽象类一定存在构造器,符合子类实例化规则
4)不能使用final
5)可能存在抽象方法:抽象方法:存在由abstract修饰的方法,没有方法体
2、与具体类的区别
1)、具体类:属性、常量、构造器、具体方法、构造块、静态块
2)、抽象类:属性、常量、构造器、具体方法、构造块、静态块、抽象方法
二、抽象类与抽象方法的关系
1、抽象类可以没有抽象方法
2、抽象方法一定存在于抽象类中
三、抽象类与子类
1、抽象子类:按需实现抽象方法,其他非抽象方法按需重写
待子孙类实现,继承链上相同的抽象方法,实现一次即可
2、具体子类:必须实现抽象方法,其他非抽象方法按需重写
实现抽象方法:必须符合重写规则
四、抽象类:模板(实现+抽象) -->部分抽象
抽象、规范:规定子类必须实现
模板模式|钩子模式|函数的回调
例:public abstract class Animal {
public abstract void breath();
public abstract void run();
public abstract void jum();
}
五、子类实例化的时候会调用它父类的默认构造方法,抽象类可以有构造方法,构造方法不可继承,但是可以供子类用super()或者super(参数,参数……)调用。
构造方法的作用是初始化对象
局部变量没有默认值,没有初始化就不能使用,否则throws NullPointerException