我们说java遵循单个继承模型,即Java类最多只能扩展一个类。然后说每个java类都继承自Object类。
假设有两个类A和B.A和B都从Object扩展。现在假设A扩展B.不暗示A具有多重继承(A是从B和类对象继承)吗?
答案 0 :(得分:9)
看看传递继承之间的区别(C直接从B继承,从A传递直接继承):
和多重继承(C继承自A和B):
除了具有相同签名的方法外,所有内容都被添加,这些方法被覆盖。甚至添加了使用相同名称声明的变量,它们只是被称为“隐藏”但仍然可以使用强制转换来访问,如果它是直接父级,则可以使用超级关键字。
答案 1 :(得分:4)
Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.
您在问题
A directly inherit B
中的和Object class
由B继承,而不是由A
继承。这称为传递继承
答案 2 :(得分:3)
您可以拥有一个继承链,这不是多重继承。 您不能拥有一次继承多个类的类。
语言禁止:
class A extends B, C
{}
答案 3 :(得分:2)
多重继承:(不支持Java)
A类扩展了对象
B类扩展了对象
C类延伸A,B
Object
/\
/ \
/ \
A B (Not supported by Java)
\ /
\ /
\ /
C
多级/传递性继承:(由Java支持)
B类扩展了对象
A类extedns B
Object
|
|
|
B (Supported by Java)
|
|
|
A
答案 4 :(得分:1)
Java类只能直接从一个类继承。在这种情况下,A
不会直接继承Object
,仅来自A
。
您是否只是从术语的角度提问,还是有一些您感兴趣的行为?
答案 5 :(得分:1)
对象A扩展了扩展Object的对象B.它不是多重继承,它的层次结构
答案 6 :(得分:1)
在Java中,每个类都可以直接仅从一个父类扩展。因此,B从Object延伸,A从B延伸, xor A和B都从Object扩展。
您认为两者都是同时存在的 - 这在Java中是不可能的。
如果B从Object扩展,A从B扩展,那么是,A确实从Object继承,但每个类仍有一个父级:
class Object
|
+-- class B
|
+-- class A
换句话说,Java不支持多重继承。
答案 7 :(得分:1)
当两个类定义相同的方法并且同时覆盖diamond problem时,多重继承的主要问题是歧义。 Java不会受此影响,因为它只允许覆盖一个类。这显然是指直接覆盖,不涉及继承的层次结构。这种继承(A overring B,B overriding等)不受任何问题的影响。
答案 8 :(得分:0)
Java不允许您扩展超过1个超类。但是,一个类可以实现多个接口。您可以创建一个接口和抽象类的结构,让您无法扩展超过1个类。祝你好运!