【8】Java多态:抽象类(abstract关键字)

多态的必要条件之一:子类要重写父类的方法。

父类Animal派生的子类CatDog都可以重写eat()方法。

如果父类Animal的eat()方法没有实际意义,但是不能直接去掉该方法,或者方法的执行语句(会出现编译错误,定义方法的时候,必须实现方法的语句)。

如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去重写它,那么,可以把父类的方法声明为抽象方法,并且含有抽象方法的类必须是抽象类(反之不成立):

public  abstract class Animal {
    public abstract void eat();
}

 

抽象类 在类的定义前加上abstract关键字,成为一个抽象类。

抽象方法 把一个方法声明为abstract,表示它是一个抽象方法,无方法语句,无法执行,无法被实例化。

使用规则:

1、关键字abstract 

2、抽象类不能直接被实例化,只能被继承,可以通过向上转型的方式完成实例化对象

3、abstract 不需要具体实现,不允许包含方法体,子类中需要重写父类的抽象方法

4、包含抽象方法的类一定是抽象类 5、一个抽象方法必须定义在抽象类中,而抽象类可以没有抽象方法。

代码

父类Animal

//抽象类
public  abstract class Animal {

    //抽象方法
    public abstract void eat();
}

子类

public  class Dog extends Animal{
    //重写父类方法
        @Override
    public void eat() {
        System.out.println("狗吃肉~~");
    }
}    

测试类

public class  Test {
    public static void main(String[] args) {
        Animal a= new Dog();
        a.eat();
    }
}
原文地址:https://www.cnblogs.com/haifeima/p/12977611.html