【发布时间】:2015-11-11 23:04:27
【问题描述】:
例如:
案例 1:我们创建的每个 Java 类是否都会扩展 Object 类,如果是,那么我们为什么能够将一个类扩展到我们的类可能是一个愚蠢的问题,只是记住了我正在发布这个问题
【问题讨论】:
-
我投票结束这个问题,因为它很容易通过搜索找到
-
哈哈@mastah;阳光是最好的消毒剂。
标签: java
例如:
案例 1:我们创建的每个 Java 类是否都会扩展 Object 类,如果是,那么我们为什么能够将一个类扩展到我们的类可能是一个愚蠢的问题,只是记住了我正在发布这个问题
【问题讨论】:
标签: java
是的,每个类都扩展Object。但是,Object 不一定是 direct 超类。如果类Child 扩展Parent,那么Child 的直接超类是Parent。在这种情况下,类层次结构是:
Child < Parent < Object
所以Child 没有多重继承。 Object 由其直接超类 Parent 传递继承。
【讨论】:
无意冒犯,但您的英语使您的问题难以阅读。不过我想我明白了。 多重继承与只从一个类继承并不相反。您可以从多个类继承,但仍然没有多重继承。
例如,如果A extends B, B extends C,则 C 从 A 和 B 继承。但是,这里的继承是线性链,而多重继承允许树,例如A extends B, A extends C。如您所见,这是不同的。在 java 中,您可以通过 transitivity 从任意多个类继承,但只能直接扩展一个类。
【讨论】:
很简单:
java 类的层次结构是树状的,以Object 为根。如果一个类不扩展任何其他类,它默认直接扩展Object。那么扩展一些其他类的类呢,比如class A extends B。现在A 扩展B 和 Object。但是这个不是多重继承。 A 扩展了B,因此A 也扩展了B 的任何超类,包括Object。想象一下这样的继承:
Object
/ | \
B ... SomeObject
|
A
【讨论】:
D、C extends D、B extends D、A extends B,C。这不是树,但在允许多重继承的语言中仍然是有效的继承关系
多重继承是当你试图同时继承多个类时,
我的意思是喜欢
class Foo extends Faa, Fii {
}
这在 Java 中是不可能的,但我们可以拥有这个
class Faa{
}
class Fii extends Faa{
}
class Foo extends Fii{
}
那不一样,在那种情况下我们有 2 个父母(我的意思是 Fii,因为我们是从 Fii 扩展而来的,而 Faa 是因为 Fii 从它扩展而来)
【讨论】: