假设有一个类Foo,Bar是它的子类(Bar扩展foo),下面声明如下:
Foo foo = new Bar(1)
Bar bar = (Bar) foo声明的foo类型是Foo,它的实际类型是Bar,声明的Bar类型是bar,但是它的实际类型是什么?
发布于 2014-06-17 22:08:19
bar的实际类型是..。Bar。
如果无法转换到Bar,JVM将抛出一个异常。请注意,foo和bar只存储对对象的引用。传递和转换引用不会修改指向对象。
它与C++中的不同之处在于,当通过值传递对象时,可以对其进行强制转换。
https://stackoverflow.com/questions/24273929
复制相似问题