抽象类
总结一下今天老师上课的内容,前面几节课听得是有点懵,在讲到内存问题,也就是代码在栈、堆、以及方法区是怎么执行的,听得不是很懂,今天讲到抽象类以及重写的机制,似乎开始慢慢懂得了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.抽象类不能实例化对象