执行结果
发现父类的构造被执行了,而且是在子类构造函数之前执行的。
但是这能说明创建子类的时候父类也被创建了吗?
我认为创建子类对象时,父类对象并没有被创建。
那既然父类对象没被创建,为什么父类的构造函数执行了
因为在new子类的时候,也就是在子类的构造函数里,你有可能会用到父类里数据,所以你得看一下父类里对这些数据是怎么初始化的吧,所以得调用父类的构造函数,但是调用了父类的构造,绝不代表父类也生成了对象
可以看下上边的图片,在创建子类对象时,会把父类里的成员变量和方法也加载进内存(因为要加载进内存,所以要看下这些数据是怎么初始化的,所以调用了父类的构造,仅此而已,并不是去创建了父类对象),然后用this和super这两个引用来区分是父类的还是子类的,但是这个内存区域是子类的内存区域,绝不是父类的
this指向了不仅父类可继承的成员变量和可继承的方法外,它还指向了子类的成员变量和方法
而super仅仅只是指向了子类对象中从父类继承的成员变量和方法。
以上是个人的理解,如果不对请在评论区指正,谢谢