public class Poly01 {//多态
//类的定位快捷键 : ctrl +B
public static void main(String[] args) {
//对象多态机制
//解决主人喂食的问题
//animal 的编译类型是Animal,可以指向(接收)Animal子类的对象
Animal animal = new Dog("小黄");
//food 的编译类型是Food,可以指向指向介绍(接收)Food子类的对象
Food food = new Bone("大骨头");
Master master = new Master("小智");
master.feed(animal,food);
}
}
//Food 类
class Food{
private String name;
public Food(){
}
public Food(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name =name;
}
}
//Fish 类
class Fish extends Food{
public Fish(String name){
super(name);
}
}
//Bone 类
class Bone extends Food{
public Bone(String name){
super(name);
}
}
//Animal 类
class Animal{
private String name;
//无参构造器
public Animal(){
}
//有参构造器
public Animal (String name){
this.name =name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name =name;
}
}
//Cat类
class Cat extends Animal{
public Cat(String name){
super(name);
}
}
//Dog类
class Dog extends Animal{
public Dog (String name){
super(name);
}
}
//Master类
class Master{
private String name;
public Master(){
}
public Master(String name){
this.name=name;
}
//使用多态机制管理喂食
public void feed(Animal animal,Food food){
System.out.println("主人"+this.name+"给"+animal.getName()+
"吃"+food.getName());
}
public String getName(){
return name;
}
public void setName(String name){
this.name =name;
}
}
结果如下: