用:定义一个主人类Master,里面有一个feed()方法。宠物类Pet,猫类Cat,狗类Dog,这三个类里有一个eat()方法,feed方法里引用eat方法,采用向上转型的方式实现主人对猫狗两个宠物的喂养。提示:运用继承和多态
时间: 2024-10-25 09:08:21 浏览: 88
好的,我们可以创建一个基础的面向对象模型来说明这个概念。首先,我们定义一个`Master`类作为主人,它有一个通用的`feed()`方法,这个方法会喂食宠物:
```java
// Master.java
public class Master {
public void feed(Pet pet) {
pet.eat(); // 使用多态调用eat方法
}
}
// Pet.java (基类)
public abstract class Pet {
public abstract void eat();
}
```
然后,我们有`Cat`和`Dog`这两个宠物子类,它们继承自`Pet`并实现了`eat()`方法,分别代表猫和狗的行为:
```java
// Cat.java
public class Cat extends Pet {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
// Dog.java
public class Dog extends Pet {
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
```
现在主人可以将任何类型的宠物传递给`feed()`方法,例如:
```java
public static void main(String[] args) {
Master master = new Master();
Cat cat = new Cat();
Dog dog = new Dog();
master.feed(cat); // 输出 "猫吃鱼"
master.feed(dog); // 输出 "狗吃肉"
}
```
在这个例子中,通过向上转型(`Pet`)和多态性,`feed()`方法可以在不知道具体宠物类型的情况下统一处理`Cat`和`Dog`,体现了继承和多态的优势。
阅读全文