ClassCastException的 问题 ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常 这句话怎么理解啊 不是实例 的子类时 or 不是 实例的子类时 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也出现类似问题 求教!!!class A{ public void print() { System.out.println ("A") ; } }class B extends A { public void print() { System.out.println ("B") ; } }public class Test_P { public static void main(String args[]){ A a = new B() ; a.print(); B b1 = (B) a ;//cast b1.print() ; B b2 =(B)new A() ; b2.print() ; } }我有一点不明白的是 : 既然 B b1 = (B) a ;//子类的对象可以指向父类的对象为何我写成 B b2 =(B)new A() ;这样就说有转换错误 B b2 =(B)new A()你这个是把一个父类对象转换成一个子类对象啊,肯定会有问题你想想,如果汽车是父类,轿车是子类,那这句话的意思就是把普通的汽车变成一个轿车,行得通吗? B b1 = (B) a之所以能转换,是因为这时的a是B类的对象,而不是A类的对象,只是A类的引用来引用了他。其实不管他怎样向上向下转型,我们实际的对象类型始终是最初实例化(new)的那个,我们实际的对象始终只能向上转型。这样我们就可以看一下B b2 =(B)new A();这条语句,他实际的对象是new 的那个即A类型,这时如果把它转为B类型就是向下转型了,违背了我们上面的原则,所以是错误的。也就是我们看事物不要看他的表面(引用类型),而要看他的实质(实际对象类型)。 JavaMail The method getMsg() from the type test1 is not visible 一个小问题! java中需要调用存储过程吗? hibernate 中如何读取数据库中值为null的字段 百分相送:大唐电信笔试上机题(关于SAX解析XML的)大家试试! 通过CompTIA Instructor+的最低分数是多少? 怎样从键盘输入几个字母,比较它们大小呢? 一个mocha的使用问题 谁有JBuilder mobileset2.0 的license key? jdk文档有个地方不懂 编码新发现
public void print() {
System.out.println ("A") ;
}
}class B extends A {
public void print() {
System.out.println ("B") ;
}
}
public class Test_P {
public static void main(String args[]){
A a = new B() ;
a.print();
B b1 = (B) a ;//cast
b1.print() ;
B b2 =(B)new A() ;
b2.print() ;
}
}我有一点不明白的是 : 既然 B b1 = (B) a ;//子类的对象可以指向父类的对象
为何我写成 B b2 =(B)new A() ;这样就说有转换错误
你这个是把一个父类对象转换成一个子类对象啊,肯定会有问题
你想想,如果汽车是父类,轿车是子类,那这句话的意思就是把普通的汽车变成一个轿车,行得通吗?
其实不管他怎样向上向下转型,我们实际的对象类型始终是最初实例化(new)的那个,我们实际的对象始终只能向上转型。
这样我们就可以看一下B b2 =(B)new A();这条语句,他实际的对象是new 的那个即A类型,这时如果把它转为B类型就是向下转型了,违背了我们上面的原则,所以是错误的。也就是我们看事物不要看他的表面(引用类型),而要看他的实质(实际对象类型)。