模拟水杯中的水在不同温度下可能出现的状态 实验要求: 1、用abstract class来实现本实验的内容 2、程序运行能够输出水在0度以下(固态),0~100度(液态),100度以上(气态)温度下水的状态
时间: 2024-12-04 09:24:08 浏览: 20
模拟水杯中的水在不同温度下的状态可以使用抽象类(Abstract Class)的概念来设计。在这个场景中,我们可以创建一个名为`WaterPhase`的抽象类,它代表水的基本特性,然后为其派生出三个具体的类分别表示固态(Solid)、液态(Liquid)和气态(Gas)。每个类将覆盖抽象类中的`getTemperatureState()`方法,该方法根据不同温度返回对应的状态。
```java
// 抽象类 WaterPhase,定义基本属性和方法
abstract class WaterPhase {
private double temperature;
public WaterPhase(double temperature) {
this.temperature = temperature;
}
// 抽象方法,需要在每个子类中具体实现
abstract String getTemperatureState();
// 其他通用方法...
}
// 固态(冰)
class Solid extends WaterPhase {
public Solid(double temperature) {
super(temperature);
}
@Override
public String getTemperatureState() {
if (temperature < 0) {
return "固态";
} else {
throw new IllegalArgumentException("水不可能处于固态超过0度");
}
}
}
// 液态(水)
class Liquid extends WaterPhase {
public Liquid(double temperature) {
super(temperature);
}
@Override
public String getTemperatureState() {
if (temperature >= 0 && temperature <= 100) {
return "液态";
} else {
throw new IllegalArgumentException("水的正常沸点是100度");
}
}
}
// 气态(水蒸气)
class Gas extends WaterPhase {
public Gas(double temperature) {
super(temperature);
}
@Override
public String getTemperatureState() {
if (temperature > 100) {
return "气态";
} else {
throw new IllegalArgumentException("水不可能处于气态低于100度");
}
}
}
public class Main {
public static void main(String[] args) {
try {
System.out.println(new Solid(-5).getTemperatureState());
System.out.println(new Liquid(20).getTemperatureState());
System.out.println(new Gas(120).getTemperatureState());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
阅读全文