最近在学习javase,遇到两个关键字 super 和 this 。解释说当super和this当做构造方法使用时不能同时出现,心中有些纠结那是为什么,左右揣摩,最后我自己给出了一个解释:
因为加载类时会先加载父类,这样当你显式调用一次super()后就已经初始化了父类,但是如果接着再调用一次this(),那么this()内部又会再次调用父类构造 ,也即再次调用super()方法,这样就不符合jvm中每个class只加载一次的原理了,于是sun公司作出了一个决定,硬性规定this()和super()不能同时出现,这样就根本避免了上述问题的出现。而this()和super()写在第一行是因为如果对象没有被构造,那么对这个对象的其他操作是无法进行的。
不喜欢死板套路,只求真实原因,还望有缘人指点迷津,不吝赐教。