虽然他们是一个"爸爸",但是双胞胎也是有区别的...作者: 曾翰翰 时间: 2012-11-3 20:48
看书了。。。好像是的。。将Fruit对象转成pear 基本上就可以、、只是从字面理解有点困难。。梨派生。。苹果。。。 作者: 黑马贾林栋 时间: 2012-11-3 21:15
Fruit f = new Apple(); 这句是new了一个Apple对象,叫f。p是Pear对象,和Apple没继承关系,所以报错作者: 梁胜海 时间: 2012-11-4 13:34
没强制转换啊,孩子。
Fruit f = new Apple();
Pear p =(Pear) f;作者: 刘丽娜 时间: 2012-11-4 15:29
强制转换一下就好了作者: 林晓泉 时间: 2012-11-4 23:51
class Fruit{
String name;
}//苹果类继承水果类
class Apple extends Fruit{
Apple()
{
super.name="苹果";
}
}
class Pear extends Fruit{
Pear()
{
super.name="梨";
}
}//梨类继承水果类
class Sample09 {
public static void main(String args[]){
Fruit f = new Apple();
System.out.println(f.name);
Pear p = (Pear)f;
System.out.println(p.name);
}
}
复制代码
Fruit f = new Apple(); //这句是父类类型引用指向子类对象
Pear p = f;//想要将父类类型引用赋给子类对象要强制转换
Pear p = (Pear)f;//可以通过编译 但是感觉怪怪的 f指向Apple()对象,结果被强转成了Pear()
改了下代码 运行提示是输出苹果,以及提示异常java.lang.ClassCastException: Apple cannot be cast to Pear
这个是运行时异常,编译没问题,运行报错,不能把Apple 对象强转成Pear对象作者: 梁枝武 时间: 2012-11-5 00:15
1,你要是想将父类引用f转为子类对象引用,需要强制转换,你没有加强转操作所以报错
2,强转的话不能转换成同一父类的其他没有直接关系的子类,比如男人不能强转为女人,猫不能强转为狗,否则出现类型转换异常作者: 陈军 时间: 2012-11-5 10:19
Fruit f = new Apple();
Pear p = f; 就这2句话