首页 > 代码库 > 继承中子类构造函数相关问题

继承中子类构造函数相关问题

Day08_SHJavaTraing_4-13-2017

1.为什么任何一个类(不包含Object)的构造函数中都需要一个super() 语句?

  因为除了Object类以外,所有类都会继承一个父类;继承父类,那么子类实例化时就需要给父类中的成员变量显示赋值,就需要用到父类中的构造函数。

2.如果父类中没有无参构造函数,子类如何实例化?

  super()表示调用父类无参构造函数;如果父类中没有无参构造函数,就会报错。

技术分享

如何解决这个问题呢?

  方法①在父类中添加一个无参构造函数

 技术分享

方法②在子类的构造函数中显示的调用父类有参构造函数

  在子类构造函数中使用super调用父类构造函数需要注意,这个super语句必须写在构造函数的第一行。

 技术分享

3.子类构造函数中,this() 和 super() 能否同时存在?

不能。因为他们都要写在构造函数的第一行。所以如果一个构造函数中有this()语句,就没有super()语句,super()存在于this调用的那个构造函数里面。

4.如果一个类的构造函数全部私有了,还可以有子类吗?

不能。因为在子类的构造函数中一定要调用父类的构造函数,而一旦一个类的构造函数都私有了,就只能在本类中使用,其他类(也包括子类)都无法使用。

 

继承中子类构造函数相关问题