有一个代码:
public class A { }
public class B extends A { }
public class Test {
public static void main(String...args){
A a2 = new B(); //Восходящее преобразование.
B b1 = a2; // Ошибка компилляции. IncompatibleTypes. Нельзя конвертировать А к B
}
}
问题:为什么 类型引用B
不想引用指向 class 对象的父类引用B
?为什么B b1 = (B)a2;
录制时一切都很完美?
这样的:
在线上
编译器不关心引用来自哪里
а2
。唯一可以说的是а2
可以隐藏在类型对象А
及其任何继任者背后的东西。而这个后继者不一定是类型В
。