|--需求说明
用多态的方式写一个宠物生病看医生的例子
|--实现方式
采用多态实现
|--代码内容
1 public class Pet { 2 private String name = "无名氏";// 昵称 3 private int health = 100;// 健康值 4 private int love = 20;// 亲密度 5 6 //无参构造方法 7 public Pet() { 8 } 9 10 //带参构造方法 11 public Pet(String name, int health, int love) { 12 this.name = name; 13 this.health = health; 14 this.love = love; 15 } 16 17 public String getName() { 18 return name; 19 } 20 21 public void setName(String name) { 22 this.name = name; 23 } 24 25 public int getHealth() { 26 return health; 27 } 28 29 30 //设定健康值的范围 31 public void setHealth(int health) { 32 if (health < 0 || health > 100) { 33 System.out.println("健康值应该在0至100之间,默认值为60。"); 34 this.health = 60; 35 return; 36 } 37 this.health = health; 38 } 39 40 public int getLove() { 41 return love; 42 } 43 44 //设置亲密度范围,如果不在范围内,就给一个默认值 45 public void setLove(int love) { 46 if (love < 0 || love > 100) { 47 System.out.println("亲密度应该在0至100之间,默认值为10。"); 48 this.love = 10; 49 return; 50 } 51 this.love = love; 52 } 53 54 //打印属性,让控制台可以看到 55 public void print() { 56 System.out.println("宠物的自白:\n我的名字叫" + 57 this.name + ",我的健康值是" + this.health 58 + ",我和主人的亲密程度是" + this.love + "。"); 59 } 60 61 //父类方法--看医生 62 public void toHospital() { 63 } 64 65 }
1 public class Cow extends Pet { 2 //无参构造方法 3 public Cow() { 4 } 5 6 //带参构造方法 7 public Cow(String name, int health, int love) { 8 super(name, health, love); 9 } 10 11 //重写看医生的方法 12 @Override 13 public void toHospital() { 14 System.out.println("洗洗,刷刷"); 15 this.setHealth(80); 16 } 17 }
1 public class Master { 2 // 主人给宠物看病 3 public void cure(Pet pet) { 4 if (pet.getHealth() < 50) { 5 pet.toHospital(); 6 } 7 } 8 }
1 public class Test { 2 public static void main(String[] args) { 3 //创建实例 4 Pet cow = new Cow(); 5 //设定牛的名字 6 cow.setName("独孤求牛"); 7 //设定一个较低的健康值 8 cow.setHealth(30); 9 cow.setLove(85); 10 11 Master master = new Master(); 12 master.cure(cow); 13 //输出看下,健康值是多少 14 cow.print(); 15 } 16 }
|--运行结果