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