用java以面向对象思想设计动物乐园,局部使用异常处理机制
时间: 2024-11-06 21:24:05 浏览: 3
在Java中,使用面向对象的思想来设计一个"动物乐园",我们可以创建一系列的类来表示动物园的各种元素,比如动物、笼子、员工等。为了体现异常处理,我们可以关注以下几个关键点:
1. **Animal** 类:作为基础类,包含一些通用属性如名称、年龄和叫声。同时,可以添加一个抽象的 `feed()` 方法,表示喂食的行为。
```java
public abstract class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void feed() throws FeedingException; // 抛出喂食异常
// 其他方法...
}
```
2. **FeedingException**:自定义一个异常类,用于捕获在喂食过程中可能出现的问题。
```java
public class FeedingException extends Exception {
public FeedingException(String message) {
super(message);
}
}
```
3. **特定动物类**(如`Lion`、`Elephant`等):继承`Animal`类并重写`feed()`方法,根据实际喂食需求抛出`FeedingException`。
```java
public class Lion extends Animal {
@Override
public void feed() throws FeedingException {
if (age < 2 || isSick()) { // 检查条件
throw new FeedingException("狮子生病了或未满两岁,无法喂食");
}
System.out.println(name + "正在享用新鲜的肉...");
}
// ...其他方法
}
// 同理为其他动物类编写喂食方法
```
4. **Keeper** 类:负责照顾动物,包含一个处理异常的方法,当喂食失败时,捕获并记录异常。
```java
public class Keeper {
public void feedAnimals(List<Animal> animals) {
try {
for (Animal animal : animals) {
animal.feed();
}
} catch (FeedingException e) {
logException(e);
}
}
private void logException(FeedingException e) {
System.out.println("发生异常:" + e.getMessage());
}
}
```
5. **主函数**:测试场景下创建动物和饲养员实例,并展示如何处理异常。
```java
public static void main(String[] args) {
List<Animal> zoo = Arrays.asList(new Lion("Simba", 3), new Elephant("Dumbo", 5));
Keeper keeper = new Keeper();
keeper.feedAnimals(zoo); // 异常处理示例
}
```
阅读全文