子类对象实例化流程
2018-08-18 本文已影响0人
熊与花
从正常的社会逻辑来讲:没有你老子一定没有你,对于 继承程序的逻辑也是一样的,在进行子类对象实例化的时候一定要先实例化好父类对象。
范例:观察一个程序
demo result发现现在即使没有进行父类对象实例化,也会由系统自动调用父类的构造方法(实例化父类对象),默认情况下,子类对象的实例化流程会自动实例化父类对象。实际上这个时候就相当于子类的构造方法里面隐藏了一个“super()”
范例:修改子类定义
super()super()表示的就是 子类调用父类构造的语句,该语句只允许放在子类构造方法的第一行。在默认情况下, 子类只会调用父类的无参构造方法,所以写与不写super()区别不大,但是如果父类里面没有提供无参构造,这个时候必须利用super()明确调用有参构造;
super("jkf")结论:无论你如何折腾,在实例化子类对象的同时一定会实例化父类对象,目的是为了所有的属性可以 进行内存空间的分配。
super与this都可以调用构造方法,super是由子类调用父类的构造,而this是调用本类的构造方法,并且都一定要放在构造方法的首行,所以两个语句不允许同时出现