public class ploytest 
{  public static void main(String[] args) 

A a = new A(); 
B b = new B(); 
a.s = "[AA]"; 
System.out.println(a.s);
b.s = "[BB]"; 
a = b; 
System.out.println(a.s); 

System.out.println(b.s); 

System.out.println(a.getS()); 

System.out.println(b.getS()); 

System.out.println("===================="); 
((A)b).s = "[AA]"; 
System.out.println(a.s); 

System.out.println(b.s); 
System.out.println(a.getS()); 
System.out.println(b.getS()); 


} class A 

String s = "[A]"; 
String getS() 

return s; 

} class B extends A

String s = ""; 
String getS() 

return s; 

} 我看到的输出结果如下:
[AA]
[A]
[BB]
[BB]
[BB]
====================
[AA]
[BB]
[BB]
[BB]
具体是怎么执行的呢?有哪位大哥可以给讲解一下不?

解决方案 »

  1.   

    A a = new A(); //a.s="[a]"
    B b = new B(); //b是继承的,父类s="[a]",子类s=""
    a.s = "[AA]";  //a.s="[aa]"
    System.out.println(a.s);
    b.s = "[BB]";  //b子类s="[bb]"
    a = b;         //a指向b的对象
    System.out.println(a.s); //a.s就是b的父类s="[a]"

    System.out.println(b.s); //b的子类s="[bb]"

    System.out.println(a.getS()); //调用的是子类getS,返回子类s="[bb]"

    System.out.println(b.getS()); //调用子类getS,返回子类s="[bb]"

    System.out.println("===================="); 
    ((A)b).s = "[AA]"; //b的父类s="[aa]"
    System.out.println(a.s); //b父类s

    System.out.println(b.s); //b子类s
    System.out.println(a.getS()); //调用子类getS,返回子类s="[bb]"
    System.out.println(b.getS()); //调用子类getS,返回子类s="[bb]"