B:抽象类特点
a:抽象类和抽象方法必须用abstract关键字修饰
abstract class 类名 {}
public abstract void eat();
b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
c:抽象类不能实例化那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
d:抽象类的子类
要么是抽象类
要么重写抽象类中的所有抽象方法
class Demo1_Abstract { public static void main(String[] args) { //Animal a = new Animal(); //错误: Animal是抽象的; 无法实例化 Animal a = new Cat(); //父类引用指向子类对象 a.eat(); }}/** B:抽象类特点 * a:抽象类和抽象方法必须用abstract关键字修饰 * abstract class 类名 {} * public abstract void eat(); * b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口 * c:抽象类不能实例化那么,抽象类如何实例化呢? * 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。 * d:抽象类的子类 * 要么是抽象类 * 要么重写抽象类中的所有抽象方法*/abstract class Animal { //抽象类 public abstract void eat(); //抽象方法 public Animal() { System.out.println("父类空参构造"); }}class Cat extends Animal { public Cat() { super(); } public void eat() { System.out.println("猫吃鱼"); }}