Java 类型转换

2025-04-24 10:22:46
推荐回答(4个)
回答1:

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,再把它转回狗,肯定可以,
因为我明确的知道它本身就是一只狗,强制转换得能转才行。

回答2:

JAVA遵循里氏代换原则,子类一定可以代替父类,不必强制类型转换,父类只能调用子类重写的方法,子类特有的方法,不可以调用

回答3:

多态的表现..父类类型的变量可以指向子类对象,但子类类型的变量不能指向父类对象
比如有动物,马,猪,马和猪继承了动物,我们可以
动物 animal = new 动物();
animal = new 猪();
但不可以
猪 pig = new 猪();
pig = new 动物();

回答4:

事先说好的能赚
不说好 不行