目录
一、运用多态解决宠物喂食问题
原理分析
运行测试
运行结果
分析
增加宠物和食物种类
Pig类
Rice类
测试
运行结果
改变Master类的feed方法的参数列表
package com.hspedu.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(Animal animal, Food food){
System.out.println("主人" + name + "给"+ animal.getName() + "喂" +
food.getName());
}
}
1)animal的编译类型是Animal,可以指向(接收)Animal子类的对象
2)food的编译类型是Food,可以指向(接收)Food子类的对象
在Poly01.java中测试,为了区分加~
package com.hspedu.poly_;
public class Poly01 {
public static void main(String[] args) {
Master master = new Master("小李");
Dog spike = new Dog("Spike~");
Bone bone = new Bone("大骨头~");
master.feed(spike,bone);
Cat tom = new Cat("Tom~");
Fish fish = new Fish("鱼罐头~");
master.feed(tom,fish);
}
}
因为spike是Dog类的对象,Dog类是Animal的子类,Animal可以接收子类的对象的传参;bone传参的原理也是如此
增加宠物Pig类继承Aniaml类,增加食物Rice类,继承Food类,别的都不需要,在Poly01中直接创建新对象然后调用feed方法即可,这就是多态的便利
Pig类package com.hspedu.poly_;
public class Pig extends Animal{
public Pig(String name) {
super(name);
}
}
Rice类package com.hspedu.poly_;
public class Rice extends Food{
public Rice(String name) {
super(name);
}
}
测试package com.hspedu.poly_;
public class Poly01 {
public static void main(String[] args) {
Master master = new Master("小李");
Dog spike = new Dog("Spike~");
Bone bone = new Bone("大骨头~");
master.feed(spike,bone);
Cat tom = new Cat("Tom~");
Fish fish = new Fish("鱼罐头~");
System.out.println("===============");
master.feed(tom,fish);
Pig pig = new Pig("猪猪侠");
Rice rice = new Rice("八宝饭");
System.out.println("============");
master.feed(pig,rice);
}
}
运行结果相关知识
java特性封装、抽象、继承、多态理论
java 多态
Java笔记:多态polymorphic
编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为
【Java学习记录】十二 Java中的多态
Java猫和狗(继承,多态,抽象,接口版)下
java开发桌面宠物
多态
(java)多态
Java学习笔记——Object类、多态、final
网址: Java学习之多态二 https://m.mcbbbk.com/newsview581236.html
上一篇: Spring PecClinic |
下一篇: 如何打造一个完美的宠物水族馆 |