【问题标题】:What constitutes indirect inheritance?什么是间接继承?
【发布时间】:2011-11-23 11:55:40
【问题描述】:

当我们说“所有类直接或间接继承自类Object”时,我们的意思是什么?什么构成了间接继承其间接超类中声明的方法的类?

我们可以说一个类间接继承了它的一个间接超类中声明的方法,而不管在超类中定义的方法可能在继承层次结构中被覆盖的事实,因此上面的 cmets 是基于事实上,子类继承了 some 方法,其签名与超类中声明的签名相同。

或者,我们只能说一个类间接继承了它的一个间接超类中声明的方法,当且仅当该类继承了它的间接超类中声明的方法,也就是说,该方法在传播时没有被覆盖在继承层次结构中,该类继承的方法与它的间接超类中定义的实现相同。

【问题讨论】:

    标签: java inheritance


    【解决方案1】:

    通过间接继承,它们意味着您扩展了另一个本身扩展 Object 的类。直接从 Object 继承意味着您要么在类签名上明确声明 extends Object,要么您没有定义它应该扩展的另一个类(在这种情况下,它根据定义直接扩展 Object。)

    就具体方法而言,您只继承层次结构中“最后一次覆盖”的方法。因此,如果我从一个继承 toString() 的类继承,我将只继承被覆盖的版本,而不是来自 Object 的原始版本。

    【讨论】:

    • 谢谢你,我理解你所说的,但我的问题是关于“所有类直接或间接继承自类 Object”的评论是正确的条件。
    • @helloRichie 它总是正确的,无论在任何类仍然从Object 继承的过程中重写了哪些方法,因为它仍然可以被视为Object
    【解决方案2】:

    Class1 在你多次使用"is-a" 来描述它们的关系时间接继承Class2(请记住"is-a" 关系是可传递的)。

    示例:a red-apple is-a apple is-a fruit is-a consumable。在此示例中,red-apple 间接继承自 fruitconsumablered-apple 直接继承自 apple(仅使用了一个 is-a 转换)

    【讨论】:

      【解决方案3】:

      关于类的间接继承的问题已经回答了。所以我添加了方法。

      我认为这里重要的是类接口(可用方法的签名,而不是接口的 java 机制)和类行为(可用方法的实现)之间的区别。在您关于方法的问题中,您可以说类间接继承方法,无论它们是否被中间类覆盖,并且没有任何其他细节意味着继承接口。要将短语的上下文设置为行为含义,您必须明确声明方法 X 的实现取自类 Y。

      【讨论】:

        猜你喜欢
        • 2021-12-26
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 2012-04-16
        • 2015-03-11
        • 1970-01-01
        相关资源
        最近更新 更多