Java 类型转换

在Java中,何时能将父类对象转换成子类对象?
为什么有的时候可以,而有的时候不能呢?

A是父类,B从A继承:

把子类对象当做父类对象来使用,父类引用指向子类对象就是向上转型(upcasting):
A a = new B();没有问题,向上转型是安全的,因为基类不会具有大于导出类的接口。

把父类对象当做子类对象来使用,就是向下转型(downcasting):

(在Java中,何时能将父类对象转换成子类对象?
为什么有的时候可以,而有的时候不能呢? )

B b = (B)new A();这是一定会报错的,

只有一种情况 向下转型 是安全的,那就是刚经过向上转型:

A a = new B();
B b = (B)a;

因为我们可以说,狗是一只动物,那么人家要求一只动物,我把狗仍里(upcasting),肯定没问题,
但是我们无法明确知道,一只动物它肯定就是一只狗,它也可能是一只猫,所以downcasting是不安全的,
那么
我刚经过upcasting,把一只狗转换成了一只动物,然后downcasting,再把它转回狗,肯定可以,
因为我明确的知道它本身就是一只狗,强制转换得能转才行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-20
JAVA遵循里氏代换原则,子类一定可以代替父类,不必强制类型转换,父类只能调用子类重写的方法,子类特有的方法,不可以调用
第2个回答  2013-11-20
多态的表现..父类类型的变量可以指向子类对象,但子类类型的变量不能指向父类对象
比如有动物,马,猪,马和猪继承了动物,我们可以
动物 animal = new 动物();
animal = new 猪();
但不可以
猪 pig = new 猪();
pig = new 动物();
第3个回答  2013-11-20
事先说好的能赚
不说好 不行

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网