接之前内容……
编写主人喂宠物的方法Master:
方案一:编写方法,传入不同类型的动物,调用各自的方法
package java_ploy;
public class Master {
/**喂宠物
* 喂猫咪:吃完东西后,主人会带着去玩线球
* 喂狗狗:吃完东西后,主人会带着狗狗去睡觉
* 养兔子、养鹦鹉、养乌龟……
*/
//方案一:编写方法,传入不同类型的动物,调用各自的方法
public void feed(Cat cat){
cat.eat();
cat.playBall();
}
public void feed(Dog dog){
dog.eat();
dog.sleep();
}
}
编写测试代码:
package java_ploy;
import java_ploy.Master;
import java_ploy.Cat;
import java_ploy.Dog;
public class MasterTest {
public static void main(String[] args) {
Master master = new Master();
Cat one = new Cat();
Dog two = new Dog();
master.feed(one);
master.feed(two);
}
}
输出:
猫吃鱼~
小猫喜欢玩线球
狗吃肉~
狗有午睡的习惯~
方案二:编写方法传入动物的父类,方法中通过类型转换,调用指定子类的方法
//方案二:编写方法传入动物的父类,方法中通过类型转换,调用指定子类的方法
public void feed(Animal obj){
obj.eat(); //子类中对父类的eat方法进行了重写
if(obj instanceof Cat){
Cat temp = (Cat)obj;
//temp.eat();
temp.playBall();
}else if(obj instanceof Dog){
Dog temp = (Dog)obj;
//temp.eat();
temp.sleep();
}
}
输出结果和方案一相同。