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);
}
Dog子类;
package com.itheima.object_practice_advanced.polymorphic;
public class Dog extends Animal {
public Dog() {
}
public Dog(int age, String color) {
super(age, color);
}
@Override
public void eat(String something) {
System.out.println(getAge() + "岁的" + getColor() + "颜色的狗两只前腿死死的抱住" + something + "猛吃");
}
public void lookHome() {
System.out.println("看家");
}
}
Cat子类:
package com.itheima.object_practice_advanced.polymorphic;
public class Cat extends Animal {
public Cat() {
}
public Cat(int age, String color) {
super(age, color);
}
@Override
public void eat(String something) {
System.out.println(getAge() + "岁的" + getColor() + "颜色的猫眯着眼睛侧着头吃" + something);
}
public void catchMouse() {
System.out.println("猫抓老鼠");
}
}
Person类:
package com.itheima.object_practice_advanced.polymorphic;
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("年龄为" + age + "岁的" + name + "养了一只" + dog.getColor() + "颜色的" + dog.getAge() + "岁的狗");
// dog.eat(something);
// }
//
// // 方法重载
// public void keepPet(Cat cat, String something) {
// System.out.println("年龄为" + age + "岁的" + name + "养了一只" + cat.getColor() + "颜色的" + cat.getAge() + "岁的🐱");
// cat.eat(something);
// }
public void keepPet(Animal a, String something) {
if (a instanceof Dog d) {
System.out.println("年龄为" + age + "岁的" + name + "养了一只" + a.getColor() + "颜色的" + a.getAge() + "岁的狗");
d.eat(something);
} else if (a instanceof Cat c) {
System.out.println("年龄为" + age + "岁的" + name + "养了一只" + c.getColor() + "颜色的" + c.getAge() + "岁的🐱");
c.eat(something);
} else {
System.out.println("没有这种动物");
}
}
}
测试类:
package com.itheima.object_practice_advanced.polymorphic;
public class Test {
public static void main(String[] args) {
// Person p1 = new Person("老王", 80);
// Dog d = new Dog(2, "黑");
// p1.keepPet(d, "骨头");
// Person p2 = new Person("老李", 90);
// Cat c = new Cat(3, "灰");
// p2.keepPet(d, "🐟");
Person p = new Person("老王", 30);
Dog g = new Dog(2, "黑");
Cat c = new Cat(3, "灰");
p.keepPet(g, "骨头");
p.keepPet(c, "🐟");
}
}