java 抽象类
1 class Demo1_Abstract { 2 public static void main(String[] args) { 3 //Animal a = new Animal(); //错误: Animal是抽象的; 无法实例化 4 Animal a = new Cat(); //父类引用指向子类对象 5 a.eat(); 6 } 7 } 8 /* 9 * B:抽象类特点 10 * a:抽象类和抽象方法必须用abstract关键字修饰 11 * abstract class 类名 {} 12 * public abstract void eat(); 13 * b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口 14 * c:抽象类不能实例化那么,抽象类如何实例化呢? 15 * 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。 16 * d:抽象类的子类 17 * 要么是抽象类 18 * 要么重写抽象类中的所有抽象方法 19 */ 20 abstract class Animal { //抽象类 21 public abstract void eat(); //抽象方法 22 23 public Animal() { 24 System.out.println("父类空参构造"); 25 } 26 } 27 class Cat extends Animal { 28 public Cat() { 29 super(); 30 } 31 public void eat() { 32 System.out.println("猫吃鱼"); 33 } 34 }
1. 一个抽象类 如果 没有抽象方法 ,可以 被定义为抽象类。这样做的意义就是 不让其他类创建本类对象,交给子类完成。
2. abstract 不能和哪些关键字 共存
1. static abstract 修饰的方法没有方法体,但是 static 修饰的方法 可以直接用 类名.方法 调用,而调用抽象方法是不行的
2. final abstract 修饰的方法要在子类中强制重写,但是 final 不能修改
3. private private 子类中不能访问