1、动物园内有很多动物,有很多食物。饲养员拿不同的食物给不同的动物吃。比如 喂猴子吃香蕉,喂老虎吃肉,喂马吃草。 要求: 在主类中,实现饲养员分别喂猴子,老虎,马,并输出对应的食物。 其中,喂马的动作通过匿名类实现。 (猴子吃香蕉、老虎吃肉、马吃草) 分析:
时间: 2024-11-24 09:42:33 浏览: 9
野生动物园官网企业模板
这是一个简单的面向对象编程示例,体现了多态的概念。在这个场景中,我们可以创建三个类,分别代表猴子、老虎和马,每个类都有它自己的食物属性和吃食方法。假设有一个`Animal`作为基类,然后有`Monkey`, `Tiger`, 和`Horse`作为派生类。
```java
// 基类 Animal
class Animal {
public void eat(String food) {
System.out.println(this + " 吃 " + food);
}
}
// 子类 Monkey, Tiger, Horse
class Monkey extends Animal {
@Override
public void eat(String food) {
super.eat(food); // 调用基类的 eat 方法,这里可以指定为吃香蕉
System.out.println("猴子吃香蕉");
}
}
class Tiger extends Animal {
@Override
public void eat(String food) {
super.eat(food); // 调用基类的 eat 方法,这里可以指定为吃肉
System.out.println("老虎吃肉");
}
}
class Horse extends Animal {
// 匿名内部类实现喂马
class FeedHorse implements Runnable {
@Override
public void run() {
eat("草"); // 喂马吃草
System.out.println("马吃草");
}
}
public void feed() {
new Thread(new FeedHorse()).start(); // 使用匿名类在新线程中喂马
}
}
public class Zoo {
public static void main(String[] args) {
Animal monkey = new Monkey();
Animal tiger = new Tiger();
Horse horse = new Horse();
monkey.eat("香蕉"); // 输出:猴子吃香蕉
tiger.eat("肉"); // 输出:老虎吃肉
horse.feed(); // 输出:马吃草
}
}
```
在这个例子中,`feed()` 方法通过匿名内部类实现了喂马的行为,而其他动物的喂食则是直接通过它们各自的实例调用 `eat()` 方法,展示了多态性。
阅读全文