本帖最后由 straw 于 2013-8-21 01:41 编辑
这个问题问得太好了!
关于创建子类对象时是否父类也被实例?我认为是不会的.
首先子类在创建对象时会调用父类的无参构造函数,很多人认为在这时父类就被实例了一个对象在内存中! 可是如果是这样的话那java也太消耗内存了吧?JVM不会傻到这个地步啊?再说了如果父类是一个抽象类的话,抽象类又不能创建实例啊.照如此分析的话父类是没有被实例的.但是很多人会认为在子类中可以通过super关键字来调用父类的方法属性,那么super不就是指向父类的实例吗?其实super不是指向父类的实例,而是指向子类继承父类下来的部分方法属性的临时对象,所以super只能访问父类的非private的属性和方法.
所以对于你的问题的话,我认为首先父类没有被实例,再次子类中可以通过super关键字去访问父类的共性方法或属性(super不能在static方法中使用,原因是static方法能先与子类对象在内存中存在) |