小编典典

继承和多态之间的主要区别是什么?

all

今天在模块开卷考试结束时向我提出了这个问题,发现自己迷路了。我正在阅读Head first Java,两个定义似乎完全相同。我只是想知道我自己的主要区别是什么。我知道有很多与此类似的问题,但是我没有看到任何一个可以提供明确的答案。


阅读 71

收藏
2022-07-08

共1个答案

小编典典

继承是“类”派生自现有“类”。因此,如果您有一个Person类,那么您就有一个Student扩展类PersonStudent 继承
了所有的东西Person。您在 Person 中的字段/方法上放置的访问修饰符有一些细节,但这是基本思想。例如,如果您在
上有一个私有字段PersonStudent则不会看到它,因为它的私有和私有字段对子类不可见。

多态性处理程序如何决定它应该使用哪些方法,这取决于它拥有什么类型的东西。如果您有一个Person,它有一个read方法,并且您有一个Studentwhich
extends Person,它有自己的实现read,则调用哪个方法由运行时为您确定,具体取决于您是 aPerson还是 a
Student。它有点棘手,但如果你做类似的事情

Person p = new Student();
p.read();

Student 上的 read 方法被调用。这就是多态性的作用。您可以执行该分配,因为 aStudent 是 a
Person,但运行时足够聪明,可以知道的实际类型pStudent

请注意,详细信息因语言而异。例如,您可以在 javascript 中进行继承,但它与在 Java 中的工作方式完全不同。

2022-07-08