java向上向下转型关系问题,以下是可执行代码,为什么在倒数第四行A a=new B();可执行,而A a=new A()错误

class A
{
public void fun1(){
System.out.println("1A");
}
public void fun2(){
this.fun1();
}
};
class B extends A
{
public void fun1(){
System.out.println("2B");
}
public void fun3(){
System.out.println("3B");
}
};
public class PolDemo
{
public static void main (String args[]){
A a = new B();
B b = (B)a;
b.fun3();
b.fun2();
}
}

A a=new A() 这里没有错,但是到了后面一句 B b = (B)a;就会出错,因为不能直接向下转型追问

那为什么经过向上转型A a = new B()后可以向下转型,而用A a = new A()直接新建一个A类就不能向下转型了呢?

追答

这是语法规定,多说无益

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-08
会不会是变量重复了。追问

应该不是,因为错误提示是不能转型

相似回答
大家正在搜