class Base { public Base(int i) { System.out.println("Base(int i)"); } } class MyOver extends Base { public MyOver(int i) { } public static void main(String[] args) { MyOver m = new MyOver(10); } }
时间: 2024-04-15 22:32:11 浏览: 24
在给定的代码中,存在两个类:`Base`和`MyOver`。`Base`类具有一个带有整型参数的构造函数,并在构造函数中打印消息。`MyOver`类是`Base`类的子类,它具有一个带有整型参数的构造函数。
在`MyOver`类中的构造函数中,没有显式地调用父类`Base`的构造函数。当没有显式调用父类的构造函数时,默认会调用父类的无参构造函数。在这种情况下,由于父类`Base`只定义了一个带有整型参数的构造函数,没有无参构造函数,所以编译器会报错。
要解决这个问题,可以在`MyOver`类的构造函数中使用`super()`来显式调用父类的构造函数。
以下是修改后的代码:
```java
class Base {
public Base(int i) {
System.out.println("Base(int i)");
}
}
class MyOver extends Base {
public MyOver(int i) {
super(i); // 显式调用父类的构造函数
}
public static void main(String[] args) {
MyOver m = new MyOver(10);
}
}
```
在修改后的代码中,通过在`MyOver`类的构造函数中添加了`super(i)`来显式调用父类`Base`的构造函数,并将参数传递给它。这样就可以解决编译错误,并正确地调用父类的构造函数。
输出结果:
```
Base(int i)
```
希望这个解释对你有帮助!