gpt4 book ai didi

java - 使用父类(super class)的构造函数

转载 作者:行者123 更新时间:2023-11-29 09:40:24 26 4
gpt4 key购买 nike

Java不允许多重继承,就是说一个类不能继承自两个没有任何共同点的类,也就是说它们不在同一条继承路径上。但是,如果这些类是该类的直接父类(super class)的父类(super class),则一个类可以继承多个类。但是该类间接继承自这些类,这意味着它不会从这些上层父类(super class)中“看到”任何东西,对吗?在考虑构造函数(在构造函数中使用 super() )时,我感到困惑。例如,如果我们有以下类:

public class A {
public A() {
....
}
}

public class B extends A {
public B() {
super();
....
}
}

public class C extends B {
public C() {
super();
....
}
}

类 C 的构造函数首先使用 super() 调用类 B 的构造函数。发生这种情况时,B 的构造函数本身首先调用 A 的构造函数(使用 super()),但是 C 的构造函数对 A 的构造函数一无所知,对吧?我的意思是,继承仅来自直接父类(super class)——继承层次结构中的第一个(最近的)类。这是我的问题——对于 super() ,我们只表示直接父类(super class)的构造函数,无论我们在继承层次结构中有多少其他类。这不仅适用于构造函数,还适用于任何方法和实例变量..

问候

最佳答案

您必须在直接基类中调用一些 构造函数。这可以是

public class A {
public A() {
....
}
public A(String foo) {
....
}
}

public class B extends A {
public B() {
super();
.. or ..
super("ThisIsAB")
}
}

public class C extends B {
public C() {
super();
....
}
}

因此对于构造函数,您无法避免构建中间基类,但您可以选择使用哪个构造函数。如果只有无参数构造函数,它会通过隐式调用 super 为您处理。使用多个构造函数,您有更多选择。

super 可以引用任何基类中的任何非私有(private)变量或方法。所以方法和变量在这方面与构造函数不同。

关于java - 使用父类(super class)的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417999/

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