子类对象实例化流程

从正常的社会逻辑来讲:没有你老子一定没有你,对于 继承程序的逻辑也是一样的,在进行子类对象实例化的时候一定要先实例化好父类对象。

范例:观察一个程序


demo


result

发现现在即使没有进行父类对象实例化,也会由系统自动调用父类的构造方法(实例化父类对象),默认情况下,子类对象的实例化流程会自动实例化父类对象。实际上这个时候就相当于子类的构造方法里面隐藏了一个“super()” 

范例:修改子类定义


super()

super()表示的就是 子类调用父类构造的语句,该语句只允许放在子类构造方法的第一行。在默认情况下, 子类只会调用父类的无参构造方法,所以写与不写super()区别不大,但是如果父类里面没有提供无参构造,这个时候必须利用super()明确调用有参构造;


super("jkf")

结论:无论你如何折腾,在实例化子类对象的同时一定会实例化父类对象,目的是为了所有的属性可以 进行内存空间的分配。

super与this都可以调用构造方法,super是由子类调用父类的构造,而this是调用本类的构造方法,并且都一定要放在构造方法的首行,所以两个语句不允许同时出现

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容