父类不可以向子类强制类型转换,这个好像没什么好说的吧,但是如果父类对象的运行时类型(run-time type)是子类类型,该转换是允许的。
例如:
A a = new B();//B是A的子类,a的编译时类型(compile-time type)为A,运行时类型为B
B b = (B)a;
你上面的例子属于运行时类型为父类的对象向子类转换,是不可以的。那个构造函数必须有么?我没仔细看,是不是你在什么地方用到new B(1,2)之类的了?
例如:
A a = new B();//B是A的子类,a的编译时类型(compile-time type)为A,运行时类型为B
B b = (B)a;
你上面的例子属于运行时类型为父类的对象向子类转换,是不可以的。那个构造函数必须有么?我没仔细看,是不是你在什么地方用到new B(1,2)之类的了?
A temp = new B();
那就可以用 B dddb = (B)temp;
ClassCastException这个错就是指强制转换时类型不匹配
你想访问B类的方法只能new 一个B类的对象出来。
A a = new B();
a.method2() 访问的就是B类的方法,不需要类型转化。
不知何这个有没有关系,记不清了,应该是在 JAVA编程思想 里看到的