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