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 子类中不能访问

原文地址:https://www.cnblogs.com/gaoyang666/p/11100300.html