public class Father {
 public int i=10;

public static void main(String[] args) {

Father o1 = new Father();
System.out.println(o1.i);

Father o2= new Son();
System.out.println(o2.i);

Son o3 = new Son();
System.out.println(o3.i);
}
}class Son extends Father{
public int i=20;
}
大家觉得答案是什么
10 20 20
还是 10 10 20
  不确定的 运行下 谢谢
有理解的人 帮忙说下原因?
   

解决方案 »

  1.   

    10 10 20
    变量不会像方法那样被重写,所以声明为Father的对象它们的i都是Father类中i的值10,不会因为继承而变成Son类中i的值20
      

  2.   

    可以看看马士兵的视频,里面有讲到子类继承父类时,怎么画内存图,实际上是在新建一个子类的时候,子类中会包含一个父类的对象,当使用father引用指向son对象时,方法会被重写,而father的引用只能访问father对象中的变量......
      

  3.   

    10,10,20
    Father o2= new Son();
    调用的还是Father类