目录
1.背景介绍
2. 使用多态机制解决喂食物问题
3.测试类
4. 新增动物种类和食物种类
4.1 修改测试类
4.2 测试结果
1.背景介绍
在Master主人类中,feed方法有两个,主人给狗喂一次食物,主人给猫喂一次食物,他们都对应一次feed方法。那如果我们有100种动物呢?是否需要写类似100种喂养方法。
package org.example.poly_;
public class Master {
private String name;
public Master(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void feed(Dog dog, Bone bone){
System.out.println("主人" + name+"给" + dog.getName()+ "吃"+bone.getName());
}
public void feed(Cat cat, Fish fish){
System.out.println("主人" + name+"给" + cat.getName()+ "吃"+fish.getName());
}
}
2. 使用多态机制解决喂食物问题
使用多态机制,可以统一管理主人喂食物的问题。父类的引用可以指向子类。我们将feed方法做如下修改。
animal编译类型是Animal, 可以指向/接受Animal的子类对象。
food编译类型是Food,可以指向/接受Food的子类对象。
这样我们多个方法用一个方法就可以体现出来了。
public void feed(Animal animal, Food food){
System.out.println("主人" + name+"给" + animal.getName()+ "吃"+animal.getName());
}
3.测试类
public static void main(String[] args) {
Master tom = new Master("tom");
Dog dog = new Dog("dog");
Bone bone = new Bone("bone");
Cat cat = new Cat("cat");
Fish fish = new Fish("fish");
tom.feed(dog, bone);
tom.feed(cat, fish);
}
我们来看看测试类的运行结果
4. 新增动物种类和食物种类
新增动物种类Pig, 新增食物种类Rice,让喂养变得更简单。
Pig类继承Animal对象
package org.example.poly_;
public class Pig extends Animal{
public Pig(String name) {
super(name);
}
}
Rice类继承Food对象
package org.example.poly_;
public class Rice extends Food{
public Rice(String name) {
super(name);
}
}
4.1 修改测试类
public static void main(String[] args) {
Master tom = new Master("tom");
Dog dog = new Dog("dog");
Bone bone = new Bone("bone");
Cat cat = new Cat("cat");
Fish fish = new Fish("fish");
Pig pig = new Pig("pig");
Rice rice = new Rice("rice");
tom.feed(dog, bone);
tom.feed(cat, fish);
tom.feed(pig, rice);
}
4.2 测试结果
public static void main(String[] args) {
Master tom = new Master("tom");
Dog dog = new Dog("dog");
Bone bone = new Bone("bone");
Cat cat = new Cat("cat");
Fish fish = new Fish("fish");
Pig pig = new Pig("pig");
Rice rice = new Rice("rice");
tom.feed(dog, bone);
tom.feed(cat, fish);
tom.feed(pig, rice);
}
public static void main(String[] args) {
Master tom = new Master("tom");
Dog dog = new Dog("dog");
Bone bone = new Bone("bone");
Cat cat = new Cat("cat");
Fish fish = new Fish("fish");
Pig pig = new Pig("pig");
Rice rice = new Rice("rice");
tom.feed(dog, bone);
tom.feed(cat, fish);
tom.feed(pig, rice);
}



