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

时间:2014-10-27 17:30:10

标签: 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 instance = new A(a);
    }
}

2 个答案:

答案 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类寻找默认构造函数。