第十四章 多态
1. 多态:同一个引用类型,使用不同的实例而执行不同的操作。
子类的对象,父类的引用;
2. 多态的实现方式:
1)使用父类作为方法形参实现多态;
子类重写父类方法
用父类接收子类对象
关键代码:
父类:public abstract void eat();
子类:public void eat(){
System.out.println("狗狗吃狗粮....");
super.setHealth(super.getHealth()+3);
}
主人类:public void feed(Pet pet){
pet.eat();
}
测试类Text:Dog d=new Dog("大黄",100,"95","大黄狗");
master.feed(d);
2)使用父类作为方法的返回值:
关键代码:
主人类:
public Pet getPet(int typeid){
Pet pet;
if(typeid==1){
pet=new Dog();
}else if(typeid==2){
pet=new Qie();
}else{
pet=new Mou();
}
return pet;
}
测试类:Pet p=master.getPet(result);
master.feed(p);
3. 如果某方法是子类特有的,那在掉用方法时,需要对父类引用进行强转;
Dog d=(Dog)pet;
instanceof的语法:对象 instanceof 类型或接口
经验:强转和instanceof一起使用
关键代码:public void play(Pet pet){
if(pet instanceof Dog){
Dog dog=(Dog)pet;
dog.catchingFlyDisc();
}else{
Qie qie=(Qie)pet;
qie.swimming();
}
}
4. 多态的优点:
多态可以减少类中代码量,可以提高代码的可扩展性和可维护性