class A{
    int i=1;
    char f(){return 'A';}
static char g() {return 'A';}   
}
   class B extends A{
        int i=2;
char f(){return 'B';}
static char g(){return 'B';}
  }
   
  public class Test{
public static void main(String[] args){
        B b=new B();
A a=b;
System.out.println(a.i);
System.out.println(a.f());
System.out.println(a.g());
System.out.println(A.g());
 
}
       }
请写出输出结果,并写出在内存中是如何分配的,为什么这样分配,希望能够详细一点,
谢谢大家啦!!!!!!!!!!!!

解决方案 »

  1.   

    输出结果是这样的。
    1
    B
    A
    A
    多态是根据运行时才确定其真正类型的。但static方法不会形成多态,根本自己本身的类型显示,同样类变量也是根据其自身原来的类型,不会形成多态。
    这只是我自己的理解。不知道对你有没有帮助。
      

  2.   

    父类引用指向了子类对象 而static方法是不属于子类对象的方法 不形成覆盖也就无所谓多态了
      

  3.   

    我觉得是
    2
    B
    A
    A
    首先内存中是有object B, reference b 是指向它的。 然后reference a也是指向它的,所以我觉得a.i是2.高人指点