继承中的this()和super()特别说明
- 特别说明;我们知道 ,类中会默认有一个空构造,所有子类在初始化时,会自动调用父类的空构造。
- 此时,在子类的构造器中,super(); 是可以省略的 ;
- 但当我们已经给父类创建了带参构造器,却没有创空构造器时,此时在初始化子类时,会报错,除非手动输入一个和我们在父类中定义相同参数类型的super()才可以,如super(int a);
- 构造函数必须出现在第一行上。 所以,注定了你只能调用一个构造函数。
- 默认的,父类的或者本类的其它构造,你自己选一个。
重点简述:
如果父类没有无参构造器,有其他的有参构造器,那么子类的所有构造器中,必须要自行添加本类构造方法或者父类的有参构造方法( this()\super() )
简而言之:
如果子类构造器中没有显式调用父类构造方法或本类构造方法,且父类没有无参构造方法,则会编译错误