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