为什么有必要给父类提供默认的构造函数?

  1. class SuperClass {  
  2.     //父类没有默认构造器,但是有含参构造器  
  3.     public SuperClass(String param) {  
  4.     }  
  5. }  
  6.   
  7. class ChildClass {  
  8. }  

出现以上代码,即不能编译通过,原因如下:

1)编译器会给子类提供默认的构造器
2)编译器不会给父类提供默认构造器,因为父类已经定义一个构造器了
3)子类在实例化时,会调用父类的默认构造器,但是--父类没有,因此逻辑上是有错的

有几种方法可以让它通过编译

1)给父类提供一个空的无参构造器

2)如果不给父类提供默认的构造器,子类的实现就需要一些额外的限制:它必须保证父类能初始化。因此子类必须提供自己的构造器,并且在构造器中调用父类的构造器

原文地址:https://www.cnblogs.com/cuixiaodong427/p/2255377.html