27-抽象类 Abstract

发布时间 2024-01-11 11:37:24作者: 马铃薯1

抽象类是一个特殊的父类,其内部允许编写抽象方法

 

public class AbstractDemo {
    public static void main(String[] args){

        // 抽象类不能实例化
        // Animal animal = new Animal(); // error: Animal is abstract; cannot be instantiated
        Cat cat = new Cat();
        cat.eat();   // 猫吃鱼
        cat.sleep(); // 非抽象方法,动物睡觉

        Dog dog = new Dog();
        dog.eat();   // 狗吃肉
        cat.sleep(); // 非抽象方法,动物睡觉
    }
}

abstract class Animal{

    // 抽象类的构造方法,只是为了让子类通过super访问
    public Animal(){
        System.out.println("抽象类的构造方法");
    }

    // 抽象方法,只有方法的声明,没有方法体
    public abstract void eat();

    // 普通方法(非抽象方法),既有方法的声明,也有方法体,可以让子类继承到继续使用
    public void sleep(){
        System.out.println("非抽象方法,动物睡觉");
    }
}

class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}