【问题标题】:About the Multiple Inheritance in java? Since Java Doesn't support Multiple Inheritance [duplicate]关于java中的多重继承?由于Java不支持多重继承[重复]
【发布时间】:2015-11-11 23:04:27
【问题描述】:

例如: 案例 1:我们创建的每个 Java 类是否都会扩展 Object 类,如果是,那么我们为什么能够将一个类扩展到我们的类可能是一个愚蠢的问题,只是记住了我正在发布这个问题

【问题讨论】:

  • 我投票结束这个问题,因为它很容易通过搜索找到
  • 哈哈@mastah;阳光是最好的消毒剂。

标签: java


【解决方案1】:

是的,每个类都扩展Object。但是,Object 不一定是 direct 超类。如果类Child 扩展Parent,那么Child 的直接超类是Parent。在这种情况下,类层次结构是:

Child < Parent < Object

所以Child 没有多重继承。 Object 由其直接超类 Parent 传递继承。

【讨论】:

    【解决方案2】:

    无意冒犯,但您的英语使您的问题难以阅读。不过我想我明白了。 多重继承只从一个类继承并不相反。您可以从多个类继承,但仍然没有多重继承。

    例如,如果A extends B, B extends C,则 C 从 A 和 B 继承。但是,这里的继承是线性链,而多重继承允许树,例如A extends B, A extends C。如您所见,这是不同的。在 java 中,您可以通过 transitivity 从任意多个类继承,但只能直接扩展一个类。

    【讨论】:

    • 正常继承允许树。多重继承实际上允许类似图的继承链
    • ...死亡之钻!
    • 一个节点的祖先(在你的树中)将永远是一个线性链,而不是一棵树。请参阅我对您的答案的评论。您对图表和所有内容都是正确的,但我发现谈论祖先的线性比考虑其他不相关的类一起形成一棵树更清楚
    【解决方案3】:

    很简单: java 类的层次结构是树状的,以Object 为根。如果一个类不扩展任何其他类,它默认直接扩展Object。那么扩展一些其他类的类呢,比如class A extends B。现在A 扩展B Object。但是这个不是多重继承。 A 扩展了B,因此A 也扩展了B 的任何超类,包括Object。想象一下这样的继承:

                           Object
                          /   |   \
                         B   ...   SomeObject
                         |
                         A
    

    【讨论】:

    • 我认为在这种情况下谈论一棵树是令人困惑的。我们感兴趣的是给定类的父类(它们实际上是我们继承的类),在 Java 中永远不是树的 ant
    • 好吧,如果你想这样看的话......然而,整体结构是一棵树。对于多重继承,即使我们查看给定类的超类之间的关系,它仍然是一个图。只需假设以下关系:DC extends DB extends DA extends B,C。这不是树,但在允许多重继承的语言中仍然是有效的继承关系
    • 嗯,没错,父母可以为多重继承形成图
    【解决方案4】:

    多重继承是当你试图同时继承多个类时,

    我的意思是喜欢

    class Foo extends Faa, Fii {
    }
    

    这在 Java 中是不可能的,但我们可以拥有这个

    class Faa{
    } 
    
    class Fii extends Faa{
    }
    
    class Foo extends Fii{
    
    }
    

    那不一样,在那种情况下我们有 2 个父母(我的意思是 Fii,因为我们是从 Fii 扩展而来的,而 Faa 是因为 Fii 从它扩展而来)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多