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]
具体是怎么执行的呢?有哪位大哥可以给讲解一下不?
{ 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]
具体是怎么执行的呢?有哪位大哥可以给讲解一下不?
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]"