我是Java编程的新手,我目前正在研究方法和构造函数覆盖。每当我尝试编译底部列出的代码时,我都会从编译器收到以下错误消息:
**** OverrideMethod.java:21:错误:构造函数OverrideMethod类中的OverrideMethod不能应用于给定的类型; OverrideMethod2(INT X) { ^ required:int found:无参数原因:实际和形式参数列表长度不同1错误****
直到我将构造函数“OverrideMethod(){}”添加到OverrideMethod类中才能编译并运行我的程序。我的问题是,在子类可以扩展它并创建自己的构造函数之前,超类必须有一个没有在其类中定义参数的默认构造函数吗?
class OverrideMethod {
int x = 0;
OverrideMethod(int x) {
System.out.println("x: " + x);
}
void doubleX() {
x = x*2;
}
}
class OverrideMethod2 extends OverrideMethod{
OverrideMethod2(int x) {
this.x = x;
}
void doubleX() {
super.doubleX();
x = x*3;
System.out.println(x);
}
}
class OverrideTest {
public static void main(String [] args) {
OverrideMethod2 obj1 = new OverrideMethod2(5);
obj1.doubleX();
}
}