练习1:使用多态实现给宠物喂食功能
package cn.jbit.epet.poly2;
/**
* 猫类,宠物的子类。
*/
public class Cat extends Pet {
private String color;//颜色
public Cat(String name, String color) {
super(name);
this.color = color;
}
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
/**
* 实现吃饭方法
*/
public void eat() {
if(getHealth()>=100){
System.out.println("狗狗"+this.getName() +"吃饱了,不需要喂食了!");
}else{
this.setHealth(this.getHealth()+4);
System.out.println("猫咪"+this.getName() + "吃饱啦!体力增加4。");
}
}
}
package cn.jbit.epet.poly2;
/**
* 狗狗类,宠物的子类。
*/
public class Dog extends Pet {
private String strain;// 品种
/**
* 有参构造方法。
* @param name 昵称
* @param strain 品种
*/
public Dog(String name, String strain) {
super(name);
this.strain = strain;
}
public String getStrain() {
return strain;
}
/**
* 重写父类的print方法。
*/
public void print(){
super.print(); //调用父类的print方法
System.out.println("我是一只 " + this.strain + "。");
}
/**
* 实现吃食方法。
*/
public void eat() {
if(getHealth()>=100){
System.out.println("狗狗"+this.getName() +"吃饱了,不需要喂食了!");
}else{
this.setHealth(this.getHealth()+3);
System.out.println("狗狗"+this.getName() + "吃饱啦!健康值增加3。");
}
}
}
package cn.jbit.epet.poly2;
/**
* 主人类。
*/
public class Master {
private String name = "";// 主人名字
private int money = 0; // 元宝数
/**
* 有参构造方法。
* @param name 主人名字
* @param money 元宝数
*/
public Master(String name, int money) {
this.name = name;
this.money = money;
}
public void setName(String name) {
this.name = name;
}
public void setMoney(int money) {
this.money = money;
}
public int getMoney() {
return money;
}
public String getName() {
return name;
}
/**
* 主人给宠物喂食。
*/
public void feed(Pet pet) {
pet.eat();
}
}
package cn.jbit.epet.poly2;
/**
* 企鹅类,宠物的子类。
*/
public class Penguin extends Pet {
private String sex;// 性别
/**
* 有参构造方法。
* @param name 昵称
* @param sex 性别
*/
public Penguin(String name, String sex) {
super(name);
this.sex = sex;
}
public String getSex() {
return sex;
}
/**
* 重写父类的print方法。
*/
public void print() {
super.print();
System.out.println("性别是 " + this.sex + "。");
}
/**
* 实现吃食方法。
*/
public void eat() {
if(getHealth()>=100){
System.out.println("企鹅"+this.getName() +"吃饱了,不需要喂食了!");
}else{
this.setHealth(this.getHealth()+5);
System.out.println("企鹅"+this.getName() + "吃饱啦!健康值增加3。");
}
}
}
package cn.jbit.epet.poly2;
/**
* 宠物类,狗狗和企鹅的父类。
*/
public abstract class Pet {
private String name = "无名氏";// 昵称
private int health = 100;// 健康值
private int love = 0;// 亲密度
/**
* 抽象方法eat(),负责宠物吃饭功能。
*/
public abstract void eat();
/**
* 有参构造方法。
* @param name 昵称
*/
public Pet(){
}
public Pet(String name) {
this.name = name;
}
public void setName(String name) {
this