1.给class前面加abstract就是抽象类,如下给Animal类添加abstract关键字。
2.new Animal的时候会报错,这是在提醒我们new Animal没什么意义。但是Animal two = new Cat()是可以的。
抽象类:不允许实例化,可以通过向上转型,指向子类实例。
应用场景:某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
3. 具体干活的都是子类, 父类的eat方法没什么特别大的意义,一般可以定义为抽象方法,不允许包含方法体;子类中需要重写父类的抽象方法。(除非把子类也变成抽象类)没有方法体。
4.为什么要使用抽象方法,抽象类?
不一定非要用抽象类, 比如动物类,有eat方法,但是动物的eat方法一般用不上,写方法体也没什么意思。猫狗鱼这些都有自己的eat方法,eat方法如果被定义成抽象类,是在提醒子类方法eat方法必须重写。
使用规则:
1.abstract定义抽象类
2.抽象类不能直接实例化,只能被继承,可以通过向上转型完成对象实例。
3.abstract定义抽象方法,不需要具体实现。
4.包含抽象方法的类一定是抽象类。
5.作为一个抽象类可以没有抽象方法。
6.当一个类中有抽象方法,这个类的子类一定要重写抽象方法。当这个子类没有重写抽象方法的时候,也要把这个类编程抽象类。
7.static private final是不能和abstract并存的。