需求:
//父类animal
package polymorphism.Test;public abstract class Animal {private int age;private String color;public Animal() {}public Animal(int age, String color) {this.age = age;this.color = color;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public void eat(String something){System.out.println("动物再吃"+something);}}
package polymorphism.Test;public class Dog extends Animal{public Dog() {}public Dog(int age, String color) {super(age, color);}@Overridepublic void eat(String something) {System.out.println(getAge()+"岁的"+getColor()+"颜色的狗两只前腿死死的抱住"+something+"猛吃");}
}
package polymorphism.Test;public class Cat extends Animal{public Cat() {}public Cat(int age, String color) {super(age, color);}@Overridepublic void eat(String something){System.out.println(getAge()+"岁的"+getColor()+"颜色的猫咪眯着眼睛侧着头吃"+something);}public void catchMouse(){System.out.println("猫抓老鼠");}
}
package polymorphism.Test;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//public void keepPet(Dog dog,String something){//System.out.println("年龄为"+getAge()+"岁的"+name+"养了一只"//+dog.getColor()+"颜色的"+dog.getAge()+"岁的狗");//dog.eat(something);//public void keepPet(Cat cat,String something){//System.out.println("年龄为"+getAge()+"岁的"+name+"养了一只"//+cat.getColor()+"颜色的"+cat.getAge()+"岁的猫");//cat.eat(something);//}public void keepPet(Animal a,String something){if(a instanceof Dog d){System.out.println("年龄为"+getAge()+"岁的"+name+"养了一只"+a.getColor()+"颜色的"+a.getAge()+"岁的狗");d.eat(something);}else if (a instanceof Cat c){System.out.println("年龄为"+getAge()+"岁的"+name+"养了一只"+a.getColor()+"颜色的"+a.getAge()+"岁的猫");c.eat(something);}else {System.out.println("没有这种动物");}}}
测试类
package polymorphism.Test;public class Test {public static void main(String[] args) {/* Person p1 = new Person("老王",30);Dog d = new Dog(2,"黑");p1.keepPet(d,"骨头");Person p2 = new Person("老李",25);Cat c = new Cat(3,"灰");p2.keepPet(c,"鱼");*/Person p = new Person("老王",30);Dog d = new Dog(2,"黑");Cat c = new Cat(3,"灰");p.keepPet(d,"骨头");p.keepPet(c,"鱼");}
}
运行结果