gpt4 book ai didi

java - Java 中的每个子类都继承自两个类(Object 及其父类(super class))?

转载 作者:行者123 更新时间:2023-11-29 09:59:30 25 4
gpt4 key购买 nike

当我创建一个新类时,它是

ClassA extends Object{
}

所以,如果我让ClassA继承自ClassB,岂不是

ClassA extends Object extends ClassB {
}

这基本上是 Java 中不允许的多重继承。

或者 Object 类是否有一个特殊的异常(exception),这意味着可以肯定地说,Java 中的每个基类都恰好继承自 2 个类

最佳答案

没有。

就是ClassA继承自ClassB,ClassB继承自Object。

这不是多重继承。这是单一继承。单一继承为您提供了一条链:

Object -> ClassB -> ClassA

多重继承让你可以做更多的树:

Object -> ClassB \
---> ClassA
Object -> ClassC /

Java 不允许你做后者。最接近的是实现多个接口(interface)。

请注意,这仍然可以(单继承),因为每个类最多有一个直接基础:

                  /--> ClassC
Object -> ClassB -
\--> ClassD

此外,为了回答您的直接问题,JLS 8.1.4 states (强调我的):

Given a ... class declaration ... the direct superclass of the class type C ... is the type given in the extends clause of the declaration of C if an extends clause is present, or Object otherwise.

即还是单继承。如果你有一个 extends 那么它就是基类,否则基类就是 Object。在您的示例中,ClassA 没有 Object 作为直接基础


您也可以自己尝试一下。 Check out this example :

static class ClassB {
}

static class ClassA extends ClassB {
}

static void printHierarchy (Class<?> clz) {
if (clz != null) {
System.out.println(clz.getSimpleName());
System.out.print("inherits from: ");
printHierarchy(clz.getSuperclass());
} else {
System.out.println("nothing");
}
}

public static void main (String[] args) {
printHierarchy(ClassA.class);
}

输出:

ClassA
inherits from: ClassB
inherits from: Object
inherits from: nothing

关于java - Java 中的每个子类都继承自两个类(Object 及其父类(super class))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com