小狗在不同环境条件下可能呈现不同的状态表现,要求用接口封装小狗的状态,具体要求如下。 (1)编写一个接口DogState,该接口有一个名字为void showState()的方法。 (2)编写Dog类,该类中有一个DogState接口声明的变量state。另外,该类有一个show()方法,在该方法中该接口state回调showState()方法。 (3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。 (4)编写主类,在主类中测试小狗的各种状态。
时间: 2024-02-03 09:15:47 浏览: 35
下面是代码实现:
```java
// 定义DogState接口
interface DogState {
void showState();
}
// 实现DogState接口的类
class HappyState implements DogState {
public void showState() {
System.out.println("小狗很开心!");
}
}
class SadState implements DogState {
public void showState() {
System.out.println("小狗很难过!");
}
}
class AngryState implements DogState {
public void showState() {
System.out.println("小狗很生气!");
}
}
// 定义Dog类
class Dog {
private DogState state;
public void setState(DogState state) {
this.state = state;
}
public void show() {
state.showState();
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setState(new HappyState());
dog.show();
dog.setState(new SadState());
dog.show();
dog.setState(new AngryState());
dog.show();
}
}
```
运行结果:
```
小狗很开心!
小狗很难过!
小狗很生气!
```
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)