Java中的多重inheritance如何工作?
Class Object
是类层次结构的根。 每个类都有Object
作为超类。 那么,如果我正在扩展API类,它会是多重inheritance吗? 显然,Java不支持多重inheritance。 它是如何工作的?
超类与父类不同。 你只能有一个母亲,但你有更多的女性祖先。
正如其他人所解释的那样,Java不支持多重inheritance。
但是,当您实现多个接口时,您可以(有点)具有多重inheritance:
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
将只是您创建的任何类的最终父类
多重inheritance意味着您可以编写一个扩展String
和Integer
的类,并获得每个类的属性。 这不能用Java完成。 您可能希望查看Delegate模式,如果这是您想要做的事情
不,它只是inheritance,照常营业
grandparent parent child
孩子只有一个父母,父母有祖父母(没有逻辑意义,但无论如何:)
多inheritance将是从两个不同的类inheritance而不需要彼此做任何事情
donkey car donkeycar
(正如你已经注意到的,它在java中是不可能的)
你的对象的超类也有一个超类等等。
所有对象都形成一个树,java.lang.Object作为它的根节点。
没有。
多重inheritance意味着您例如从两个类inheritance
class A {} class B {} class C extends A, B {}
这在Java中是不可能的。
你能做的是
class A {} class B extends A {} class C extends B {}
所以你有超过一个超级但只有一个父级。
我理解多重inheritance水平工作 (多个父超类直接inheritance到一个子类)而不是垂直(父母的父母),考虑inheritance树。
正如您所说,Java中只允许垂直类型。
Sun Microsystem省略了多重inheritance。 但是,多重inheritance在某种程度上是有用的。 这是一个可能帮助您进行java多重inheritance的链接。
http://java.sys-con.com/node/37748
希望有所帮助。
inheritance是传递性的。 您扩展了一个API类,该API类本身扩展了Object。 所以你间接扩展了Object。 更短,如果A延伸B而B延伸C,则A延伸C.
这不是多重inheritance。 如果你愿意,’inheritance链’可以随你所愿。 但最终,一切都在它的最后。
真正的多重inheritance将同时从两个不相关的类扩展。 你不能用Java做到这一点。