- class SuperClass {
- //父类没有默认构造器,但是有含参构造器
- public SuperClass(String param) {
- }
- }
- class ChildClass {
- }
出现以上代码,即不能编译通过,原因如下:
1)编译器会给子类提供默认的构造器。
2)编译器不会给父类提供默认构造器,因为父类已经定义一个构造器了。
3)子类在实例化时,会调用父类的默认构造器,但是--父类没有,因此逻辑上是有错的。
有几种方法可以让它通过编译
1)给父类提供一个空的无参构造器
2)如果不给父类提供默认的构造器,子类的实现就需要一些额外的限制:它必须保证父类能初始化。因此子类必须提供自己的构造器,并且在构造器中调用父类的构造器