继承 - 为什么超类继承子类实例?

时间:2016-06-08 22:38:48

标签: java inheritance

假设创建了五个类:

enter image description here

并且它们都是通过继承连接的,如图所示,newFruit是GoldenDelicious的一个实例,myOrange是Orange的一个实例。

以下是我的问题:

  1. 为什么newFruit会成为Apple和Fruit的一个实例而不是Macintosh?
  2. 为什么myOrange会成为Fruit的一个实例,而不是Apple?
  3. 根据我对继承的理解,Apple(GoldenDelicious和Macintosh)的所有子类都有它的实例,但Apple(Fruit)的超类不会。为什么不是这样?

1 个答案:

答案 0 :(得分:2)

(不考虑接口以保持简单;只讨论类继承)

如果你有一张图片中的继承树, 那么类的实例也将是所有父节点的实例,但不是兄弟节点的实例。

因为Java中的继承是"is a" relationship

在现实世界中,如果newFruitGoldenDelicious,那么它是 Apple以及它' sa Fruit。但GoldenDelicious对象不是Orange。这似乎很直观。