抽象类
总结一下今天老师上课的内容,前面几节课听得是有点懵,在讲到内存问题,也就是代码在栈、堆、以及方法区是怎么执行的,听得不是很懂,今天讲到抽象类以及重写的机制,似乎开始慢慢懂得了java的底层原理。
父类:
子类:
上面的Cat
类重写父类的eat()
方法。
Test:
如果我们将父类的eat
方法的修饰语改为private
,子类会出现以下情况:
则子类不可以继承该父类的方法。
如果我们将父类的eat
方法体去掉,则会出现以下情况:
eat
方法会出现“Missing method body, or declare abstract”报错,缺少方法体,或声明对象。
此刻,就需要用到我们今天的抽象类。
当我们在前面加abstract
抽象类时,会出现提示“Abstract method in non-abstract class”,非抽象类中的抽象方法。
此时,只需要把我们的Animal
类改为抽象类即可,如下:
但是,Cat
子类会出现如下问题:
Test会出现如下问题:
因为当一个类被声明为抽象类时,它不能被实例化。
总结抽象类:
1.用abstract
修饰的类
2.含有抽象方法的类
3.抽象类中未必含有抽象方法
4.抽象类不能实例化对象