继承中子类构造函数相关问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承中子类构造函数相关问题相关的知识,希望对你有一定的参考价值。
Day08_SHJavaTraing_4-13-2017
1.为什么任何一个类(不包含Object)的构造函数中都需要一个super() 语句?
因为除了Object类以外,所有类都会继承一个父类;继承父类,那么子类实例化时就需要给父类中的成员变量显示赋值,就需要用到父类中的构造函数。
2.如果父类中没有无参构造函数,子类如何实例化?
super()表示调用父类无参构造函数;如果父类中没有无参构造函数,就会报错。
如何解决这个问题呢?
方法①在父类中添加一个无参构造函数
方法②在子类的构造函数中显示的调用父类有参构造函数
在子类构造函数中使用super调用父类构造函数需要注意,这个super语句必须写在构造函数的第一行。
3.子类构造函数中,this() 和 super() 能否同时存在?
不能。因为他们都要写在构造函数的第一行。所以如果一个构造函数中有this()语句,就没有super()语句,super()存在于this调用的那个构造函数里面。
4.如果一个类的构造函数全部私有了,还可以有子类吗?
不能。因为在子类的构造函数中一定要调用父类的构造函数,而一旦一个类的构造函数都私有了,就只能在本类中使用,其他类(也包括子类)都无法使用。
以上是关于继承中子类构造函数相关问题的主要内容,如果未能解决你的问题,请参考以下文章