gpt4 book ai didi

java - 为什么必须存在 no args 才能使代码正常工作?

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:10 25 4
gpt4 key购买 nike

在这段代码中,我理解它适用于 A 类中的 super(t) 或 B 类中的无参数构造函数。下面的代码使用 B 类中的无参数构造函数。我理解如果你使用 no args 构造函数超出 B 类代码不起作用。我是编程新手,我想了解的是 B 类中的无参数构造函数有何特别之处,为什么代码必须存在它才能工作?什么是特殊条件或规则?

public class Test {

public static void main(String[] args) {

B b = new B(5);

}
}

class A extends B {
public A(int t) {

System.out.println("A's constructor is invoked");
}
}

class B {

public B() {

}

public B(int k) {
System.out.println("B's constructor is invoked");
}
}

最佳答案

class A extends B {

编译器在编译这个类时确保;如果程序员不写 this()super()明确地说,它将添加 super()作为类 A 中提供的每个构造函数的第一行.

如果程序员没有提供其他构造函数,编译器还会确保向类添加无参数构造函数。

现在,假设您没有在类 B 中提供无参数构造函数并且编译器也不会提供,因为您已经为构造函数提供了参数。但是,在类里面A它会添加 super()作为构造函数的第一行。即调用基类无参数构造函数。因此,它会导致编译器错误。

因此,正如您所说,要么在类 B 中提供无参数构造函数或者写 super(<int>)在类里面A .

关于java - 为什么必须存在 no args 才能使代码正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251934/

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