日期:2014-05-20  浏览次数:20658 次

为何无法输出?
class   A{
String   a= "class   A ";
}
class   B   extends   A{
String   b= "calss   B ";
}
public   class   Exam3_17{
public   static   void   main(String   args[]){
A   a1,a2=new   A();
B   b1,b2=new   B();
        a1=b2;
b1=(B)a2;
        System.out.println(a1.a);
System.out.println(b1.b);

}
}

------解决方案--------------------
只有父类对象才可以用它的子类对象来代替。而你恰恰写反了。
A a3 = new B();
System.out.println(a3.a);

------解决方案--------------------
b1=(B)a2;这一句不对啊,怎么能将指向子类对象的引用指向父类。这样的转化不对除非
a2 instanceof B

A a2 = new B();
他才能
这样转