public class ZH01 { public int i = 1; ZH01(int m){ i = 1; } } class Fd extends ZH01{ Fd(int i){ this.i = 2; } }为什么会编译错误
时间: 2023-06-20 14:07:23 浏览: 82
编译项目后,出现如下错误
这段代码会编译错误,因为子类 `Fd` 没有显式调用父类 `ZH01` 的构造函数。当父类没有提供无参构造函数时,子类必须显式地调用父类的构造函数,否则编译器会默认调用父类的无参构造函数,而这里父类没有提供无参构造函数,所以编译会报错。
可以通过在子类构造函数中使用 `super` 关键字来显式调用父类的构造函数,如下所示:
```
public class ZH01 {
public int i = 1;
ZH01(int m) {
i = 1;
}
}
class Fd extends ZH01 {
Fd(int i) {
super(i); // 调用父类的构造函数
this.i = 2;
}
}
```
这样就可以解决编译错误了。
阅读全文