我希望在继承期间调用父类的参数化构造函数(选择的构造函数)。
但默认情况下我得到了非参数化的构造函数。
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();
}
}
答案 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");
}