向上转型: 只要满足 对象(右边)是这个变量(左边)的子类型就可以
前提假设 Person -> Man、Woman -> ChineseMan
例: Person p1 = new Man();
Person p2 = new Woman();
右边是左边的子类型,就是向上转型
向下转型: 必须满足,对象的运行时类型 “<=” (即小于等于) 要强转的类型
例1:
Person p1 = new Man();
Man m = (Man) p1;
p1的运行类型就是Man类型的,它想要强转的类型也是Man类型的
Man类型 <= Man类型 , 可以强转
例2:
Person p3 = new ChineseMan();
Man m2 = (Man) p3;
p3的运行时类型是ChineseMan,它想要强转的类型是Man类型
ChineseMan类型 <= Man类型, 可以强转
补充instanceof使用
语法格式:
if (变量/对象 instanceof 类型)
instanceof的作用是判断 某个变量/对象的运行时类型 是否<= instanceof 后面写的类型