Version: Next
2. 抽象
如何使用抽象类和抽象方法
不能直接创建抽象类对象。 因为太抽象
必须用一个子类来继承抽象父类
子类必须重写(实现)抽象父类中所有的抽象方法,去掉abstract,补上方法体
创建子类对象进行使用
注意事项
- 抽象类不能直接创建对象,只能创建其非抽象子类的对象,假设创建了抽象类对象,调用抽象方法 时,没有具体的方法体,没有意义
- 抽象类中,可以有构造方法,时供子类创建对象时,初始化父类成员使用的子类的构造方法中,有默认的super(),需要访问父类构造方法
- 抽象类中,不一定包含抽象方法,但是抽象方法的类一定是抽象类,未包含抽象方法的抽象类,目的就是不想让调用者创建该类的对象,通常用于某些特殊结构的类结构设计
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译期间报错,除非该子类也是抽象类。假设不重写所有的抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义
拓展:
- 关于抽象类和多态性的丰富应用,可以在设计模式中进行学习
public abstract class Animal {
//抽象方法,具体吃什么,大括号的内容不确定
public abstract void eat();
public void normalMethod(){
System.out.println("普通方法");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class DemoMain {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();
}
}