1.1 多态的概述
什么是多态:多种形态。
分两部分:
1、功能多态:一个行为多种实现方式 体现:重写和重载
2、形态多态:一个类型的多种表现形式比如:动物多种表现形式:猫、狗
Animal a=new Dog();//父类的引用指向子类的对象(即向上转型),反过来不行
使用父类作为方法形参实现多态
1.4 父类作为返回值
/**
* 买宠物
* @param choose
* @return
*/
public Animal buy(int choose){
Animal animal=null;
switch (choose) {
case 1:
animal=new Dog();
break;
case 2:
animal=new Cat();
break;
case 3:
animal=new Pig();
break;
default:
break;
}
return animal;
}
使用父类作为返回值实现多态
1.5 父类作为参数传递
/**
* 玩耍
*/
public void play(Animal a){//向下转型,一般与instanceOf结合使用,调用子类特有的属性和行为
/*if(a==null){
return;
}*/
if(a instanceof Dog){
((Dog)a).eat();
}else if(a instanceof Cat){
((Cat)a).sleep();
}else if(a instanceof Pig){
((Pig)a).run();
}
}
1.2 多态的应用
1、向上转型:父类引用指向子类对象
2、向下转型:父类引用显式类型转换为子类对象。