【发布时间】:2020-04-14 17:57:55
【问题描述】:
Java 中的所有类默认都继承自 Object 类。
那么继承的类怎么能继承其他类呢?
Java 不支持多重继承,对吧?
【问题讨论】:
-
因为当你从另一个类继承时,你不再直接从
Object继承。您将从Object通过您的自定义类继承。该类仍然只有一个父级。
标签: java object multiple-inheritance
Java 中的所有类默认都继承自 Object 类。
那么继承的类怎么能继承其他类呢?
Java 不支持多重继承,对吧?
【问题讨论】:
Object继承。您将从Object通过您的自定义类继承。该类仍然只有一个父级。
标签: java object multiple-inheritance
正如您已经正确指出的,Java 中的所有类默认都继承自 Object 类。这意味着任何没有定义extends 子句的类都隐含地写入了extends Object。示例
class Animal // implicitly written extends Object
{}
另一方面,如果一个类有extends 子句,那么它不会直接从Object 继承。但是它的父类继承自对象。由于继承具有传递性,因此类也继承了 Object 的功能。示例
class Dog extends Animal {}
class Animal // implicitly written extends Object
{}
这意味着Dog 是Animal,Animal 是Object。因此Dog 是Object。你可以写Object o = (Object) new Dog();,那完全没问题。
这可以任意深入。例如,您现在可以有一个类Poodle,它继承Dog,它继承Animal,它继承Object。因此Poodle 是Object。
【讨论】:
您所说的被称为 - 多级继承。
多级继承是指 OO 技术中的一种机制,可以从派生类继承,从而使该派生类成为新类的基类。
即- A 是 Object 类,B 是您要继承的基类,C 是您的子类。
顺便说一句,Java 8 引入了默认方法来处理基本的多继承问题(尽管我不同意它解决了实际问题)-check default methods in Java 8
【讨论】:
类从至少和最多一个类继承,
要么隐式来自 Object(不写 extends),要么显式来自其他类(如 extends YourParentClass)
除了没有超类的 Object 之外,每个类都有一个且只有一个直接超类(单一继承)。在没有任何其他显式超类的情况下,每个类都隐含地是 Object 的子类
因为每个类都继承自Object或者类继承自Object,所以每个类还是继承自Object,例如toString()方法
如果您的自定义类继承自不同的类,仍然在层次结构的末尾,父类将是 Object,请注意类 hierarchy 不是多重继承:
在 java.lang 包中定义的 Object 类定义并实现了所有类共有的行为,包括您编写的类。在 Java 平台中,许多类直接派生自 Object,其他类派生自其中一些类,依此类推,形成类的层次结构
在层次结构的顶部,对象是所有类中最通用的。靠近层次结构底部的类提供更专业的行为。
【讨论】:
通过继承,子类将通过父类继承对象类。
【讨论】: