gpt4 book ai didi

java - 单参数 ctor A(x) 隐式调用 super() 而不是 super(x)

转载 作者:行者123 更新时间:2023-12-02 05:47:47 24 4
gpt4 key购买 nike

class A{

A(int x){}
}

class B extends A{

B(int x){}

public static void main(String args[]){
B b = new B(10);
}
}

我知道这会引发错误(B 的单参数构造函数,隐式调用 super(),因此 A 不存在默认参数构造函数)。我很好奇为什么 B 的单参数构造函数不使用 super(x) 来调用 A 类的单参数构造函数。相反,当我为 A 显式编写无参数构造函数时,这让我陷入了麻烦不需要!

最佳答案

你可以像这样重写你的 B 类:

class B extends A{
B(int x) {
super(x);
}
}

它会做你想做的事。它不会隐式发生,因为 A 中可能有很多不同的构造函数(在您的示例中没有,但可能)并且它不知道哪一个是正确的。如果您有一个具有长度和宽度的类,由于某种原因覆盖了具有宽度和高度的类,该怎么办?您不会希望 Java 仅仅因为参数类型匹配就自动调用父类(super class)构造函数。您可能希望出现编译错误,迫使您使用适当/正确的参数显式调用父类(super class)构造函数。

关于java - 单参数 ctor A(x) 隐式调用 super() 而不是 super(x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374113/

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