今天在模块公开书考试结束时,我被问到了这个问题,结果发现自己迷路了。我正在阅读Head first Java,这两个定义似乎完全相同。我只是想知道我自己的主要区别是什么。我知道有很多与此类似的问题,但是我没有看到能提供确定答案的问题。
Head first Java
继承是指“类”源自现有的“类”。所以,如果你有一个Person类,那么你有一个Student扩展类Person,Student 继承了所有的事情Person了。你在“个人”中的字段/方法上放置的访问修饰符有一些详细信息,但这是基本思想。例如,如果你在上有一个私有字段Person,Student则不会看到它,因为它的私有字段和私有字段对子类不可见。
Person
Student
Person,Student
多态性涉及程序如何决定应使用的方法,具体取决于程序具有的类型。如果你有一个Person,其中有一个read方法,而你有一个Student扩展Person,有其自己的实现read,则由运行时为你确定调用哪个方法,这取决于你有一个Person还是一个Student。这有点棘手,但是如果你执行类似的操作
read
Person p = new Student(); p.read();
调用Student的read方法。多数民众赞成在行动中。你可以进行分配,因为a Student 是a Person,但是运行时足够聪明,可以知道a的实际类型p是Student。
请注意,语言之间的细节有所不同。例如,你可以在javascript中进行继承,但是它与Java中的工作方式完全不同。
javascript