java编译小狗在不同环境条件下可能呈现不同的状态表现,要求用接口封装小狗的状态,具体要求如下。 (1)编写一个接口DogState,该接口有一个名字为void showState()的方法。 (2)编写Dog类,该类中有一个DogState接口声明的变量state。另外,该类有一个show()方法,在该方法中该接口state回调showState()方法。 (3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。 (4)编写主类,在主类中测试小狗的各种状态。
时间: 2024-02-25 22:57:14 浏览: 101
java代码-编写一个类,类名为Rectangle(矩形),它有两个整型的变量width(宽)和height(高);有一个方法area(),没有参数,返回类型为double,功能是求矩形的面积;还有另一个方法为perimeter()没有参数,返回类型为double,功能是求矩形的周长,
好的,我明白了您的问题。下面是代码实现:
首先,我们定义DogState接口,其中有一个名为showState()的抽象方法,用于表示小狗的状态:
```java
public interface DogState {
void showState();
}
```
接下来,我们定义Dog类,该类中有一个DogState接口声明的变量state,并且有一个show()方法,用于在该方法中回调state的showState()方法:
```java
public class Dog {
private DogState state;
public void setState(DogState state) {
this.state = state;
}
public void show() {
state.showState();
}
}
```
接着,我们定义若干个实现DogState接口的类,用于表示小狗的各种状态。例如,我们可以定义三个具体的状态类:HappyState、SadState和AngryState:
```java
public class HappyState implements DogState {
@Override
public void showState() {
System.out.println("小狗很开心!");
}
}
public class SadState implements DogState {
@Override
public void showState() {
System.out.println("小狗很难过!");
}
}
public class AngryState implements DogState {
@Override
public void showState() {
System.out.println("小狗很生气!");
}
}
```
最后,我们在主类中测试小狗的各种状态:
```java
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();
}
}
```
输出结果为:
```
小狗很开心!
小狗很难过!
小狗很生气!
```
这样,我们就成功地用接口封装了小狗的状态,使得小狗在不同的状态下有不同的表现。
阅读全文