class A{
int count = 6;
}
class B extends A{
int count = 7;
}
public class Test{
public static void main(String[] args){
B b = new B();//创建完b对象后,b在内存中指向的空间只有属性count = 7,还是说空间有count = 7以及count = 6.
}
}
当创建完b对象后,b在内存中指向的空间只有属性count = 7,还是说空间有count = 7以及count = 6?
Sub初始化的时候,会默认调用Base()的构造方法,即Sub会先初始化父类Base,然后初始化自身。
在你的例子中,s = new Sub(),s可以同时调用this和super区域;而Base b = s, b 则指向的是super,只能调用super。所以s的内存空间中存在两个count值,即this.count = 7, super.count = 6,而b只存在一个值,即super.count = 6
这些内容楼主想了解更详细的话,可以去看看《深入理解Java虚拟机》这本书
我认为应该是只有7,这个其实很像覆盖,覆盖了父类的成员变量,如果是方法会很有体现