能帮我写一份满足以上条件的java代码吗
时间: 2024-11-27 10:23:22 浏览: 3
当然可以,下面是一个简单的示例代码,演示了如何按照上述实验要求实现:
```java
// 定义Animal抽象类
abstract class Animal {
protected String name;
// 抽象方法
public abstract void drink();
public abstract void cry();
// 构造函数
public Animal(String name) {
this.name = name;
}
}
// 自定义水不够异常
class WaterNotEnoughException extends Exception {
public WaterNotEnoughException(String message) {
super(message);
}
}
// Cat 和 Dog 子类,继承Animal
class Cat extends Animal {
@Override
public void drink() {
try {
// 模拟水不够的情况
if (Math.random() * 10 < 5) { // 50%的概率模拟水不够
throw new WaterNotEnoughException("水不够,无法让" + name + "喝");
} else {
System.out.println(name + "正在喝水...");
}
} catch (WaterNotEnoughException e) {
System.out.println(e.getMessage());
}
}
@Override
public void cry() {
System.out.println(name + "喵~");
}
}
class Dog extends Animal {
@Override
public void drink() {
try {
// 同样模拟水不够的情况
if (Math.random() * 10 < 7) { // 70%的概率模拟水不够
throw new WaterNotEnoughException("水不够,无法让" + name + "喝水");
} else {
System.out.println(name + "正在喝水...");
}
} catch (WaterNotEnoughException e) {
System.out.println(e.getMessage());
}
}
@Override
public void cry() {
System.out.println(name + "汪~");
}
}
public class Main {
public static void main(String[] args) {
Animal cat = new Cat("小花");
Animal dog = new Dog("大黄");
try {
cat.drink();
dog.drink();
} catch (WaterNotEnoughException e) {
System.out.println("遇到水不够异常:" + e.getMessage());
}
}
}
```
这个代码首先定义了抽象类`Animal`和`WaterNotEnoughException`,然后`Cat`和`Dog`子类继承`Animal`,并在`drink()`方法中加入异常处理。主函数中创建实例并调用`drink()`方法,异常会在必要时被捕获。
阅读全文