自动转型:将较小的类型转换为较大的类型
A a = new A();
B b1 = a; //成立的前提是B是A的父类
C c = new C();
B b2 = c; //成立的前提是B是C的父类
b1.read();
b2.read(); //b1与b2 看起来没区别,但动作结果不同
强制转型:将较大的类型转换为较小的类型
int i=(int)10.5; //结果为10
(1)安全的强制转型
A a1 = (A)b1; //因为b1本身就是A类型变量的引用传递
(2)不安全的强制转型
A a2 = (A)b2; //b2是C类型变量的引用传递,转换为A是不安全的