向上转型(多态性).
Person p = new Men();
向下转型(强制转换).
注意对象p 本质上仍然是 Men
Men m = (Men)p;
错误示范.
示范一: 兄弟类型
//Woman 和 Men 直接父类都是 Person
Person p = new Men(); // 向上转型
Women w = (Women) p;// 向下转型,报错ClassCastException,p本质是Men类型,不能转为Women
示范二:父子类型
//Men 是 Person的子类
Person p = new Person;// Person对象的实例化
Men m = (Men) p;// 向下转型,报错ClassCastException,p本质是Person,不能转为Men
小结.
向下转型
- 必须 先向上转型,再向下转型
- 向下转型的对象(被强转的对象),本质上必须是对象引用(变量)的同类型或者其子类