抽象
抽象就是把共性的方法提取出来放在父类,具体实现交给子类
- 抽象中子类与父类的关系还是继承关系。
- 抽象方法:就是返回值类型前加上abstract关键字,然后去掉大括号,直接加分号结束
- 抽象类:抽象方法所在的类,必须是抽象类才行。在class前加上abstract即可
public abstract class Animal{
public abstract void eat();
public void nomalEat(){
}
}
使用
- 不能直接创建new抽象类对象。
- 必须用一个子类来继承父类。
- 子类必须覆盖重写父类当中所有的抽象方法。
- 覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。(记得写Override)
- 创建子类对象进行使用
注意事项
- 抽象类不能创建方法,如果创建即无法通过编译报错,只能创建其非抽象子类的对象
- 抽象类中也可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
- 子类的构造方法中,有默认的super(),需要访问父类构造方法
- 抽象类中不一定包含抽象方法,但是有抽象方法的一定是抽象类
- 抽象类的子类必须重写抽象父类的所有抽象方法,否则编译无法通过。除非这个子类也是抽象类。