Java 从子类的main方法创建父实例

Java 从子类的main方法创建父实例,java,inheritance,subclass,Java,Inheritance,Subclass,我尝试在子类的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 instanc

我尝试在子类的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);
    }
}

问题不在这里

A instance = new A(a);
问题是,由于您在测试中没有定义任何构造函数,编译器应该提供以下形式之一:

Test() {
    super();
}
但它不能,因为超类(A)没有任何默认构造函数。因此,您需要明确地提供一个构造函数:

Test() {
    super(0);
}


例如。

您的行没有问题
A实例=新的A(A)这不是编译错误的来源

在类A中,您定义了一个构造函数
A(int A)
,它阻止自动生成默认(无参数)构造函数

出现编译错误的原因是,您正在使用
扩展一个类,测试扩展了一个
,而没有调用超类的构造函数。它正在寻找类a的默认构造函数

Test(int i) {
    super(i);
}