小狗的状态(java)

小狗在不同环境条件下可能呈现出不同的状态表现,要求用接口封装小狗的状态。具体要求如下:

  1. 编写一个接口DogState,该接口有一个名字为void showState()的方法。
  2. 编写Dog类,该类中有一个DogState接口声明的变量State。另外,该类有一个show()方法,在该方法中让接口state回调showState()方法。
  3. 编写若干个实现DogState接口的类,负责刻画小狗的各种状态。
  4. 编写主类,在主类中测试小狗的各种状态。

package main;

public interface DogState {
    public void showState();
}

public class Dog {
    DogState state;
    public void show(){
        state.showState();
    }
    public void setState(DogState s){
        state=s;
    }
}
public class MeetEnemyState  implements DogState{
   void showState()
    {
        System.out.println("狗会警惕!");
    }//重写showState()
}

public class MeetFriendState  implements DogState{
    void showState()
    {
        System.out.println("狗会开心!");
    }//重写showState()
}

public class MeetAnotherDog implements DogState{
    void showState()
    {
        System.out.println("狗会摇尾巴!");
    }//重写showState()
}

public class CheckDogState {
    public static void main(String[] args) {
        Dog yellowDog=new Dog();
        System.out.print("狗遇到敌人");
        yellowDog.setState(new MeetEnemyState());
        yellowDog.show();
        System.out.print("狗遇到朋友");
        yellowDog.setState(new MeetFriendState());
        yellowDog.show();
        System.out.print("狗遇到同伴");
        yellowDog.setState(new MeetAnotherDog());
        yellowDog.show();
    }

}

运行结果截图:

好的,我明白了您的问题。下面是代码实现: 首先,我们定义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(); } } ``` 输出结果为: ``` 小狗很开心! 小狗很难过! 小狗很生气! ``` 这样,我们就成功地用接口封装小狗状态,使得小狗不同状态下有不同表现
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值