定义一个主人类Master,里面有一个feed()方法。宠物类Pet,猫类 Cat,狗类 Dog,这三个类里有一个eat()方法,feed方法里引用eat方法,采用向上转型的方式实现主人对猫狗两个宠物
时间: 2024-10-26 15:02:35 浏览: 30
在面向对象编程中,我们可以创建一个通用的主人类`Master`和一系列具体的宠物子类,如`Pet`、`Cat`和`Dog`。这里我们假设`Master`有一个`feed()`方法,这个方法用于喂养宠物。而每个宠物类都有它们各自的行为,比如`eat()`方法,表示吃东西。
首先,我们定义`Master`类:
```java
public class Master {
public void feed(Pet pet) {
// 使用向上转型,将pet视为更一般类型的实例
pet.eat();
}
}
public abstract class Pet {
public abstract void eat();
}
```
然后,`Cat`和`Dog`继承自`Pet`,并实现各自的`eat()`方法:
```java
public class Cat extends Pet {
@Override
public void eat() {
System.out.println("猫正在吃鱼");
}
}
public class Dog extends Pet {
@Override
public void eat() {
System.out.println("狗正在吃骨头");
}
}
```
当你创建一个`Master`对象,并传入一个`Cat`或`Dog`实例给`feed()`方法时,`eat()`方法会根据不同子类的具体实现得到不同的行为:
```java
public static void main(String[] args) {
Master master = new Master();
Pet cat = new Cat();
Pet dog = new Dog();
master.feed(cat); // 输出:猫正在吃鱼
master.feed(dog); // 输出:狗正在吃骨头
}
```
阅读全文