我是 Java 新手。在下面的代码中,我很难理解这些概念。
class A {
private Integer intr;
public A(Integer intr) {
this.inrt = intr;
}
public Integer getIntr() {
return intr;
}
}
class B extends A {
public B(Integer intr) { //Eclipse asking me to create this constructor.
super(intr);
}
}
我很困惑为什么我需要按照 eclipse 的建议创建这种构造函数。里面有什么?
最佳答案
子类的构造函数调用其父类(super class)的构造函数(在您的情况下是A
)。如果您的子类 B
没有构造函数,编译器会自动创建一个不带任何参数的构造函数。该构造函数自动调用基类 A
的不带参数的构造函数。
由于您的基类 A
有一个带参数的构造函数,编译器不会为其生成不带参数的构造函数,因此您必须在子类中显式创建一个具有单个参数的匹配构造函数B 类。
还有在 B 中创建该构造函数的其他替代方法:
您可以在 A 中定义无参数构造函数:
public A()
{
this.inrt = 0;
}
这将允许为 B
自动生成的无参数构造函数调用 A
中匹配的构造函数。
或者您可以在 B
中显式定义一个无参数构造函数,调用 A
的现有构造函数:
public B()
{
super(0);
}
关于java - 父类(super class) 子类 构造函数 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688078/