我尝试在子类的main方法中创建父实例。它显示错误:" A类中的构造函数A不能应用于给定类型"。请告诉我为什么我的代码不起作用。感谢
class A
{
protected int a;
A(int a) {
this.a = a;
}
}
class Test extends A
{
public static void main(String[] args) {
int a = 10;
A instance = new A(a);
}
}
答案 0 :(得分:1)
问题不在线
A instance = new A(a);
问题是,由于你没有在Test中定义任何构造函数,编译器应该提供以下形式之一:
Test() {
super();
}
但它不能,因为超类(A)没有任何默认构造函数。所以,你需要提供一个构造函数:
Test() {
super(0);
}
或
Test(int i) {
super(i);
}
例如。
答案 1 :(得分:0)
您的行A instance = new A(a);
没有任何问题。这不是编译错误的来源。
在A类中,您已经定义了一个构造函数A(int a)
,它可以防止默认(无参数)构造函数被自动生成。
您收到编译错误的原因是您使用class Test extends A
扩展A并且不调用超类的构造函数。它正在为A类寻找默认构造函数。