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)编译错误和运行时错误有点不同,编译出错是提醒代码又漏洞,但是如果运行时没有执行到漏洞代码,则不影响正常的运行结果;
本文深入探讨了子类对象实例化过程中父类构造方法的选择机制,解释了super()如何用于调用父类构造方法,以及this在类构造中的应用。文章还分析了super和this在构造方法中的限制。

被折叠的 条评论
为什么被折叠?



