【8】Java多态:抽象类(abstract关键字)
多态的必要条件之一:子类要重写父类的方法。
父类Animal
派生的子类Cat
和Dog
都可以重写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(); } }