Java继承三(附):父类有多个构造方法,子类对象加载过程中,具体选择哪一个父类的构造方法?;this和super比较时的tips;

本文深入探讨了子类对象实例化过程中父类构造方法的选择机制,解释了super()如何用于调用父类构造方法,以及this在类构造中的应用。文章还分析了super和this在构造方法中的限制。

1.父类有多个构造方法,子类对象加载过程中,具体选择哪一个父类的构造方法

事先说明:由上节可知,在构造子类对象的过程中:第五步中,当父类和子类都加载完毕后,会回到main方法,继续进行子类对象的实例化构造;;;;然后,第六步中,开始执行子类的构造方法,并没有执行子类的构造方法的内部,而是直接转到了父类的构造方法。上节的那个例子即是直接跳到了父类的无参构造方法,这儿的原因是:

在子类的构造方法的第一行有一个默认的super();即默认调用父类的无参构造,也就是在子类的构造方法的第一行什么都不写的话,就是默认有了super(),也就是默认调用父类的无参构造方法

(由此可见,父类的无参构造方法的重要性,不能不写,否则,对于上面的情况(子类的构造方法的首行什么都不写时,默认有有super(),即默认调用父类的无参构造方法的情况下),会报错的,(即本来要调用父类无参构造,但是没有,所以会报错)

如果,父类写了有参构造,而且构建子类对象的时候,想调用父类的有参构造,则应该:super(name,month),即会调用父类的有参构造方法。

注:上述操作的目的还不明确;;;主要是,在构造子类对象的过程中,得到的父类对象跑哪儿去了,怎么使用父类对象,这一切的目的又是什么?。。。。等以后,了解了类加载过程,JVM之后,可能会有更好的理解,目前暂且如此

待定:

 

注:一个小例子:

2.this和super比较时的tips

(1)super指代父类对象,和this同理,不能在static方法中使用super;

(2)可以使用this去调用同一类的其他构造方法。

(3)在一个构造方法中,不可以同时出现super和this去调用本类和父类的构造方法;(因为this和super都是需要在第一行的,这就没法处理了)

(4)编译错误和运行时错误有点不同,编译出错是提醒代码又漏洞,但是如果运行时没有执行到漏洞代码,则不影响正常的运行结果;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值