Pfeffer 2017-08-11 02:49 采纳率: 50%
浏览 938
已采纳

关于抽象类的方法 ,对于Java核心技术卷里的一些句子

对于Java核心技术卷里的一些句子提出问题,

  1. 许多程序员认为,在抽象类中不能包含具体方法,建议尽量将通用的域和方法(不管是否抽象的)放在超类(不管是否是抽象类)中。

问: 什么是通用的域或者方法。

2.抽象方法充当占位的角色,他们的具体实现在子类中。扩展抽象类可以有两种选择。一种是在子类中定义部分抽象方法或者抽象方法也不定义,这样就必须将子类也标记为抽象类;另一种是定义全部的抽象方法,这样一来,子类就不是抽象的了。

问: 我明明可以通过重新覆盖来在子类中实现父类中定义的抽象方法,为什么非要把子类也变成抽象方法。 还有就是什么是定义全部的抽象方法。

  • 写回答

4条回答 默认 最新

  • 天涯泪小武 博客专家认证 2017-08-11 03:02
    关注

    问题1:通用的域和方法,域应该指的变量吧,通用方法就是指他所有子类都会用到的方法。拿个例子,动物--哺乳动物--狗。那么所有动物都会呼吸、会吃。
    像吃和呼吸方法就可以放在动物类中,但不同的动物叫声不同,动物这个超类就无法定义通用的叫声了,只能定义个抽象方法供子类去实现。
    问题2:接上面,子类是可以全部覆盖所有父类抽象方法,但是像哺乳动物作为一个子类,它就不适合覆盖“叫”的方法,因为它也可以作为一个父类,去实现一些
    哺乳动物才通用的方法,具体单个的动物怎么叫,还得由狗这个子类去实现。那么哺乳动物的“叫”方法也得去抽象的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?