【发布时间】:2010-08-10 12:24:43
【问题描述】:
类Object 是类层次结构的根。每个类都有Object 作为超类。那么,如果我要扩展一个 API 类,会不会是多重继承?显然,Java 不支持多重继承。那么它是如何工作的呢?
【问题讨论】:
类Object 是类层次结构的根。每个类都有Object 作为超类。那么,如果我要扩展一个 API 类,会不会是多重继承?显然,Java 不支持多重继承。那么它是如何工作的呢?
【问题讨论】:
超类与父类不同。你只能有一个母亲,但你有更多的女性祖先。
【讨论】:
正如其他人所解释的那样,Java 不支持多重继承。
但是当你实现多个接口时,你可以(有点)拥有多重继承:
interface Moveable {
void relocate(Coordinate position);
Coordinate getCurrentPos();
}
interface Tradeable {
void sell(BigInteger amount);
void buy(BigInteger amount);
}
interface Crashable {
void crash();
}
class Vehicle implements Moveable, Tradeable, Crashable {
}
现在Vehicle 应该来自它实现的接口的所有方法。
【讨论】:
不,Object 将只是您创建的任何类的最终父类
多重继承意味着您可以编写一个扩展String 和Integer 的类,并获得每个类的属性。 Java 无法做到这一点。如果这是你想做的事情,你可能想看看the Delegate pattern
【讨论】:
不,它只是继承,一切照旧
grandparent
parent
child
孩子只有一个父母, 并且父母有祖父母(没有逻辑意义,但无论如何:)
多重继承是指你从两个不同的类继承时不需要彼此做任何事情
donkey car
donkeycar
(正如您已经指出的,这在 java 中是不可能的)
【讨论】:
你的对象的超类也有一个超类等等。
所有对象形成一棵以 java.lang.Object 作为根节点的树。
【讨论】:
没有。
多重继承意味着你继承例如两个类
class A {}
class B {}
class C extends A, B {}
这在 Java 中是不可能的。
你可以做的是
class A {}
class B extends A {}
class C extends B {}
所以你有不止一个超类,但只有一个父类。
【讨论】:
我的理解是多重继承水平地工作(多个父超类直接继承到一个子类中)而不是垂直地(父母的父母),考虑到继承树。
正如你所说,Java 中只允许使用垂直类型。
【讨论】:
继承是可传递的。您扩展了一个 API 类,而该 API 类本身扩展了 Object。所以你间接地扩展了 Object.更短一点,如果 A 扩展 B,B 扩展 C,则 A 扩展 C。
这不是多重继承。如果你愿意,“继承链”可以随心所欲。但归根结底,一切都以Object结尾。
真正的多重继承将同时从两个不相关的类扩展。你不能在 Java 中做到这一点。
【讨论】: