如何在父(超级)类中调用所选的构造函数

时间:2017-10-12 13:58:55

标签: java oop inheritance constructor

我希望在继承期间调用父类的参数化构造函数(选择的构造函数)。

但默认情况下我得到了非参数化的构造函数。

class parent
{

    parent(int i){System.out.println("From parameterized constructor");}
    parent(){System.out.println("From Normal Constructore");}
}

class child extends parent
{
    child()
    {
    System.out.println("From child");
    }
}


public class MyClass {
    public static void main(String args[]) {
        child c=new child();
    }
}

2 个答案:

答案 0 :(得分:5)

默认情况下,除非特别重写,否则每个构造函数都包含对super()的调用作为第一行。所以在你的情况下;

Child() {
    System.out.println("From child");
}

相当于

Child() {
    super();
    System.out.println("From child");
}

其中super()是对父类的默认构造函数的引用。要改变它。您可以执行以下操作;

Child() {
    super(1);
    System.out.println("From child");
}

这应输出类似

的内容
From parameterized constructor
From child

答案 1 :(得分:1)

如果您未指定任何构造函数,则将采用默认构造函数(无参数) 如果您想要另一个,可以拨打super来呼叫:

child() {
    super(1);
    System.out.println("From child");
}