您的位置:首页 > 编程语言 > Java开发

JAVA中 子类与父类构造方法的关系 个人理解

2017-10-26 08:08 295 查看
编写JAVA作业时在继承的环节发现了一些错误,希望总结一些规律:(以下全部属于自己归纳,可能有问题)

一句话概括就是:子类一定会调用(不是继承)父类的构造方法!

即遵循一个原则:子类的构造一定是在父类已构造的基础上!

这句话要分为几种情况来理解(下面只讨论父类有构造函数):

子类构造函数自动调用super() (也可以手动加上)

但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中包含对super(args)的调用

一、父类含有无参构造函数

1、子类没有构造方法或者含有无参的构造方法:

这种情况,都会默认地调用super()

2、子类含有有参数构造方法:

同样会在首句默认调用super()                //其实跟情况1类似

二、父类含有含参数的构造方法,不含无参数的构造方法:

子类没得选择:

子类必须申明一个构造方法(且含super的args),且方法里要首先调用super(args),否则报错。

三、父类含 含参数的构造方法和无参的构造方法:

此时子类可以选择性调用:

可以无构造方法:仍会默认调用super()

也可以有构造方法:其中会默认地调用super(),你也可以在开头加上这句,如果你不希望调用父类默认的无参方法,那么在 子类构造方法 中调用 父类含参构造方法。

上述看似情况复杂,其实基于其原则理解并不难。

综上:java为了保持  子类的构造基于父类的构造  这一原则,子类构造时必须通过某些方式首先调用父类的构造方法,否则会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息