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

2022-08-31 06:21:31

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


答案 1

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

多态性处理程序如何决定它应该使用哪些方法,这取决于它具有什么类型的东西。如果你有一个 ,它有一个方法,你有一个 哪个扩展 ,它有自己的实现,哪个方法被调用是由运行时为你确定的,这取决于你是有一个还是一个.这有点棘手,但如果你做这样的事情PersonreadStudentPersonreadPersonStudent

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

学生上的读取方法被调用。这就是行动中的多态性。您可以执行该赋值,因为 a 是 一个 ,但运行时足够智能,知道 的实际类型是 StudentStudentPersonp

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


答案 2

继承是指在子类中使用超类的结构和行为

多态性是指改变子类中超类的行为。