一、多态
1、多态的三个条件
- 继承
- 重写
- 父类的引用指向子类的对象
二、多对象转型
1、向上转型
父类的引用指向子类的对象
//女扮男装,由女儿变成了父亲的身份去征兵打仗
//向上转型,由小往大,自动转换
Daughter huaMuLan = new Daughter();
Father huaHu = huaMuLan;
huaMuLan = null;
huaHu.fight();
向上转型,由小往大,自动转换;
2、向下转型
子类的引用指向父类的对象
//得胜归朝
//向下转型(一定是基于向上转型的),由大往小,强制转换
System.out.println("-----得胜归朝-----");
huaMuLan = (Daughter)huaHu;
huaHu = null;
huaMuLan.dressup();
向下转型,由大往下,强制转换。
三、instanceof方法
A instanof B 判断 A 类是否为B 类
if(p instanceof NorthPerson){
NorthPerson np = (NorthPerson) p;
np.eat();
System.out.println("做馒头");
}else{
SouthPerson sp = (SouthPerson) p;
sp.eat();
System.out.println("做米饭");
}
李四是北方人爱吃馒头
做馒头
张三是南方人爱吃米饭
做米饭