class A {}
class B extends A {}A a = new A();
B b = new B();A a1 = b;//ok
B b1 = (B)a1; // ok,因为a1的类型实际上是B
B b2 = a; // ClassCastException,a的类型是A
所谓类型就是instanceof。
class B extends A {}A a = new A();
B b = new B();A a1 = b;//ok
B b1 = (B)a1; // ok,因为a1的类型实际上是B
B b2 = a; // ClassCastException,a的类型是A
所谓类型就是instanceof。
运行正常的条件是: 当执行到这条语句时b 必须真正是ClassA类的一个对象
|
------------
| |
形状 窗体
| |
--------- -----------
| | | |
圆 长方形 X 窗体 Linux窗体ok!圆是物件,也是形状,UP-CASTING 成为形状或物件都没问题,现在是一个标明为“物件的长方体”,这个物件实际就是长方体的,OK?把他当作
换句话说,它就不是“窗体了”,OK!