所以你的答案就显而易见了,Father f = new Father() Child c = new Child()这里Father是父类,Child是子类,f和c是两个不同的内存地址,他们的对象保存的地方也不同,所以他们的字段也不会再同一片内存区域。
如果父类中有个字段a,子类继承了父类的这个字段a,其实就是子类的那个内存区域里面也会有一个a字段,父类的内存区域中也有a字段,他们两个没有什么关系。
看完下面的代码你就明白了……class Test0 {
public static String staticField = "父类-静态变量"
public String field = "父类-普通变量"
public Test0() {
System.out.println("父类-构造器")
}
static {
System.out.println(staticField)
System.out.println("父类-静态初始化块")
}
{
System.out.println(field)
System.out.println("父类-初始化块")
}
}
public class Test1 extends Test0{
public static String staticField = "子类*静态变量"
public String field = "子类*普通变量"
static {
System.out.println(staticField)
System.out.println("子类*静态初始化块")
}
{
System.out.println(field)
System.out.println("子类*初始化块")
}
public Test1() {
System.out.println("子类*子类构造器")
}
public static void main(String args[]) {
System.out.println("main方法")
Test1 test1 = new Test1()
}
}
输出结果为:
父类-静态变量
父类-静态初始化块
子类*静态变量
子类*静态初始化块
main方法
父类-普通变量
父类-初始化块
父类-构造器
子类*普通变量
子类*初始化块
子类*子类构造器