其实是在百度知道上的一段回答。自我感觉挺良好的,所以记录下来。
Q:为了保证非抽象子类重写抽象方法: 抽象类可以不包括抽象方法 但是含有抽象方法的类必须是抽象类。这句话怎么理解呢?
A:抽象类是指不允许被实例化的类;抽象方法是没有方法体的方法。
1、抽象类可以不包括抽象方法,它反正不会去实例化,里面的方法是不是抽象的没有本质影响。南京Java培训机构
2、但是含有抽象方法的类绝不能被实例化,否则执行这个方法的时候,怎么办?
3、如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然没有方法体,也是个抽象方法,此时就与“含有抽象方法的类必须是抽象类”相矛盾了。南京Java培训机构
比如说,我在纸上画一个饼(抽象类),饼有个“吃到嘴里沾一嘴芝麻”的方法。我可以在饼上画几个点假装是芝麻,这时候“沾芝麻方法”就是个抽象方法,因为它不会真的掉芝麻;我也可以在饼上蘸点儿真芝麻,这时候“沾芝麻方法”就是个有实现的方法。但是用哪个方法都可以,因为没人会去真的吃画的饼吧。南京Java培训机构
但我要真的去照着这个图烤一个饼(非抽象子类),那这个子类的“吃到嘴里沾一嘴芝麻”的方法就必须有具体的实现。否则烤出来,一吃,没芝麻啊!食客非上消协投诉不可。
拓展阅读:
Java是计算机领域的“普通话”,是打开计算机科学之门的钥匙;学好Java使你能真正从“计算机系统底层”角度理解计算机;学好Java能把计算机玩弄于股掌之上,成为计算机系统的专家;学好Java是成为编程高手的必经之路
93年成立至今,江苏万和计算机培训中心培养的Java软件工程师数万名,万名学员在众多合作企业中就职,他们当中有很多人已经走上了管理岗位,在业界不仅树立起良好的口碑,同时也增加了良好的人脉关系,为学员构筑无障碍就业提供独有通道。