假设有一个类Foo,而Bar是它的子类(Bar extends foo),并声明了以下内容:
Foo foo = new Bar(1)
Bar bar = (Bar) foo
声明的foo类型是Foo,它的实际类型是Bar 声明的条形类型是Bar,但它的实际类型是什么?
答案 0 :(得分:2)
bar
的实际类型是...... Bar
。
如果无法转换为Bar
,JVM将抛出异常。请注意,foo
和bar
仅存储对象的引用。传递和转换引用不会修改指向对象。
它与C ++中的不同,当你可以在按值传递对象时强制转换对象。