Java-使用多态实现主人给宠物投喂食物功能
1. Pet Class
package cn.animal.output;
import java.util.Scanner;
public abstract class Pet{
public Scanner scanner = new Scanner(System.in);
protected String name;
protected int health = 100;
protected int love = 80;
protected static int add = 5;
protected static int decress = 10;
public Pet(String name){
this.name = name;
}
public void status(){
System.out.println("****宠物系统****\n您的宠物名字: "+this.name+
"\n宠物健康: "+this.health+"\n宠物亲密度: "+this.love);
}
public abstract void eat();
}
2. Dog Class
package cn.animal.output;
import java.util.Scanner;
public class Dog extends Pet{
private String skill = "接飞盘";
private String food = "狗粮";
public Dog(String name){
super(name);
}
public void catchingFlyDisc(){
super.love += add;
super.health -= decress;
System.out.println("他正在玩: "+this.skill +" 健康: +"+add+" 亲密度: -"+decress);
}
public void dogAction(Dog dog){
lab:while(true){
System.out.println("你想让你的 >>"+super.name+"<< 做什么操作: 1.吃东西 / 2.玩飞盘呢 / 3. 显示宠物状态 / 4.退出");
int answer = scanner.nextInt();
switch(answer){
case 1:
dog.eat();
break;
case 2:
dog.catchingFlyDisc();
break;
case 3:
dog.status();
break;
case 4:
System.out.println("退出啦!886");
break lab;
default:
System.out.println(">>>Input error{500}");
break ;
}
}
}
public static void feed(Dog dog){
dog.dogAction(dog);
}
@Override
public void eat(){
super.love -= decress;
super.health += add;
System.out.println("他正在吃: "+this.food +" 健康: +"+add+" 亲密度: -"+decress);
}
}
3. Penguin Class
package cn.animal.output;
public class Penguin extends Pet{
protected String skill = "游泳";
protected String food = "鱼";
public Penguin(String name){
super(name);
}
public void penguinAction(Penguin pgn){
lab:while(true){
System.out.println("你想让你的 >>"+super.name+"<< 做什么操作: 1.吃东西 / 2.游泳 / 3. 显示宠物状态 / 4.退出");
int answer = scanner.nextInt();
switch (answer){
case 1:
pgn.eat();
break;
case 2:
pgn.swimming();
break;
case 3:
pgn.status();
break;
case 4:
System.out.println("退出啦! 886");
break lab;
default:
System.out.println(">>>Input error {500}");
break;
}
}
}
public static void feed(Penguin pgn){
}
public void swimming(){
super.love += add;
super.health -= decress;
System.out.println("他正在玩: "+this.skill +" 健康: -"+ decress+" 亲密度: +"+add);
}
@Override
public void eat(){
super.health += add;
super.love -= decress;
System.out.println("他正在吃: "+this.food +" 健康: +"+add+" 亲密度: -"+decress);
}
}
4. Master Class
package cn.animal.output;
public class Master {
public static Pet play(Pet pet) {
if (pet instanceof Dog){
Dog.feed((Dog) pet);
} else if (pet instanceof Penguin) {
Penguin.feed((Penguin) pet);
} else {
System.out.println(">>>Instanceof error");
}
return pet;
}
public static Pet getPet(int ans) {
Pet pet = null;
if (ans == 1){
pet = new Dog("大米");
} else if (ans == 2) {
pet = new Penguin("小企");
}
return pet;
}
}
5. TestRun Class
package cn.animal.output;
import java.util.Scanner;
public class TestRun {
public static final Scanner scanners = new Scanner(System.in);
public static void start(){
System.out.println("请输入: 1.狗子 /2.企鹅");
int answer = scanners.nextInt();
Pet pet = Master.getPet(answer);
if (pet!=null){
System.out.println(">>>>领养成功!");
Master.play(pet);
}else {
System.out.println(">>>Sorry start error {500}");
}
}
public static void main(String[] args) {
start();
}
}