方法重写和多态
1. 多态的表现形式
1.父类作为形参,子类作为实参
2.父类作为返回值,实际返回值为子类类型
package com.edu.test2; /** * 父类 * 父类中编写子类共有的属性 和 方法 */ public class Pet { private String name; private int health; private int love; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getHealth() { return health; } public void setHealth(int health) { this.health = health; } public int getLove() { return love; } public void setLove(int love) { this.love = love; } public void print() { System.out.println("宠物的名字是:" + name + ",健康值是:" + health + ",爱心值是:" + love ); } public void cure() { System.out.println("给宠物看病"); } public Pet() { } public Pet(String name, int health, int love) { this.name = name; this.health = health; this.love = love; } @Override public String toString() { return "name=" + name + ", health=" + health + ", love=" + love ; } }
package com.edu.test2; /** * Dog类 * 品种 * print() */ public class Dog extends Pet{ private String strain; public String getStrain() { return strain; } public void setStrain(String strain) { this.strain = strain; } public Dog() { } public Dog(String strain,String name,int health,int love) { super(name, health, love); this.strain = strain; } @Override public String toString() { return "Dog [strain=" + strain + ","+super.toString()+"]"; } public void cure() { super.cure(); System.out.println("狗狗看病,吃药打针,吃骨头,健康值恢复"); this.setHealth(100); this.setLove(100); } }
package com.edu.test2; /** * 主人类 * * 需求:现在宠物店开业搞活动,抽奖送宠物 * 一等奖:送成年雌企鹅一只 * 二等奖:送狗狗一只 * 三等奖:送猫咪一只 * 幸运奖:送成年东北虎一只 */ public class Master { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void toHospitalWithDog(Dog dog) { dog.cure(); } public void toHospitalWithPenguin(Penguin penguin) { penguin.cure(); } public void toHospital(Pet pet) { pet.cure(); } //------------------------------------------------------ public Penguin givePenguin() { Penguin penguin = new Penguin("雌性", "大白", 100, 10