public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//一个变量接收所有动物
//一个方法的形参是一个类,我们可以传递这个类所有的子类对象
public void keepPet(Animals a,String something){
if (a instanceof Dog d){
System.out.println("年龄为"+age+"的"+name+"养了一只"+d.getColor()+"的"+d.getAge()+"岁的狗");
d.eat(something);
d.lookHome();
}else if (a instanceof Cat c){
System.out.println("年龄为"+age+"的"+name+"养了一只"+c.getColor()+"的"+c.getAge()+"岁的猫");
c.eat(something);
c.catchMouse();
}else {
System.out.println("没有这种动物");
}
}
}
animals类:
public class Animals {
private int age;
private String color;
public Animals() {
}
public Animals(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 food){
System.out.println("动物在吃"+food);
}
}
Dog:Cat同理
public class Dog extends Animals{
public Dog() {
}
public Dog(int age, String color) {
super(age, color);
}
@Override
public void eat(String food){
System.out.println(getAge()+"岁的"+getColor()+"的狗"+"两只前腿死死的抱住"+food+"猛吃");
}
public void lookHome(){
System.out.println("狗在看家");
}
}
测试类:
public class Test {
public static void main(String[] args) {
//一个方法的形参是一个类,我们可以传递这个类所有的子类对象
//Animals a1 = new Dog(2,"黑颜色");
//Animals a2 = new Cat(3,"灰颜色");
//与下面等同
Dog d = new Dog(2,"黑颜色");
Cat c = new Cat(3,"灰颜色");
Person p1 =new Person("老王",30);
Person p2 =new Person("老李",25);
p1.keepPet(d,"骨头");
p2.keepPet(c,"鱼");
}
}