【问题标题】:Multiple Inheritance in Java even if class inherits Object [duplicate]Java中的多重继承,即使类继承了对象[重复]
【发布时间】:2020-04-14 17:57:55
【问题描述】:

Java 中的所有类默认都继承自 Object 类。

那么继承的类怎么能继承其他类呢?

Java 不支持多重继承,对吧?

【问题讨论】:

  • 因为当你从另一个类继承时,你不再直接从Object继承。您将从Object通过您的自定义类继承。该类仍然只有一个父级。

标签: java object multiple-inheritance


【解决方案1】:

正如您已经正确指出的,Java 中的所有类默认都继承自 Object 类。这意味着任何没有定义extends 子句的类都隐含地写入了extends Object。示例

class Animal // implicitly written extends Object
{}

另一方面,如果一个类有extends 子句,那么它不会直接从Object 继承。但是它的父类继承自对象。由于继承具有传递性,因此类也继承了 Object 的功能。示例

class Dog extends Animal {}

class Animal // implicitly written extends Object
{}

这意味着DogAnimalAnimalObject。因此DogObject。你可以写Object o = (Object) new Dog();,那完全没问题。

这可以任意深入。例如,您现在可以有一个类Poodle,它继承Dog,它继承Animal,它继承Object。因此PoodleObject

【讨论】:

    【解决方案2】:

    您所说的被称为 - 多级继承。

    多级继承是指 OO 技术中的一种机制,可以从派生类继承,从而使该派生类成为新类的基类。

    即- A 是 Object 类,B 是您要继承的基类,C 是您的子类。

    顺便说一句,Java 8 引入了默认方法来处理基本的多继承问题(尽管我不同意它解决了实际问题)-check default methods in Java 8

    【讨论】:

      【解决方案3】:

      类从至少和最多一个类继承,

      要么隐式来自 Object(不写 extends),要么显式来自其他类(如 extends YourParentClass

      除了没有超类的 Object 之外,每个类都有一个且只有一个直接超类(单一继承)。在没有任何其他显式超类的情况下,每个类都隐含地是 Object 的子类

      因为每个类都继承自Object或者类继承自Object,所以每个类还是继承自Object,例如toString()方法

      如果您的自定义类继承自不同的类,仍然在层次结构的末尾,父类将是 Object,请注意类 hierarchy 不是多重继承:

      在 java.lang 包中定义的 Object 类定义并实现了所有类共有的行为,包括您编写的类。在 Java 平台中,许多类直接派生自 Object,其他类派生自其中一些类,依此类推,形成类的层次结构

      在层次结构的顶部,对象是所有类中最通用的。靠近层次结构底部的类提供更专业的行为。

      【讨论】:

      • 我认为 op 将继承链视为多重继承,因此造成混淆。
      • @Spidey 更新以避免混淆
      【解决方案4】:

      通过继承,子类将通过父类继承对象类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 2014-03-16
        • 2012-06-02
        • 2017-11-25
        相关资源
        最近更新 更多