刻画小狗状态java_JAVA面向接口编程

JAVA面向接口编程

小狗在不同环境条件下可能呈现不同的状态,小狗通过调用 cry()方法体现自己的当前的状 态。要求用接口封装小狗的状态。具体要求如下。

• 编写一个接口 DogState,该接口有一个名字为 void showState()的方法。

• 编写 Dog 类,该类中有一个 DogState 接口声明的变量 state。另外,该类有一个 cry()方 法,在该方法中让接口 state 回调 showState()方法。即 Dog 对象通过 cry()方法来体现 自己目前的状态。

• 编写若干个实现 DogState 接口的类,负责刻画小狗的各种状态。

• 编写主类,在主类中用 Dog 创建小狗,并让小狗调用 cry 方法体现自己的状态

1、使用方法:implements可以实现多个接口

2、接口使用interface关键字进行声明

interface DogState {

public void showState();

}

DogState为接口

3、创建多个实现接口的类

class SoftlyState implements DogState {

public void showState() {

System.out.println("主人在,听主人的命令");

}

//重写public void showState()

}

class MeetEnemyState implements DogState {

public void showState() {

System.out.println("见到主人的敌人,上前咬他");

}

//重写public void showState()

}

class MeetFriendState implements DogState {

public void showState() {

System.out.println("见到主人的朋友,上前欢迎");

}

//重写public void showState()

}

在不同的类中,使用重写函数的方法

4、创建小狗类,创建 DogState 接口声明的变量 state

class Dog {

DogState state;

public void cry() {

state.showState();

}

public void setState(DogState s) {

state = s;

}

}

5、创建主函数调用各个接口

public class E {

public static void main(String args[]) {

Dog yellowDog =new Dog();

yellowDog.setState(new SoftlyState());

yellowDog.cry();

yellowDog.setState(new MeetEnemyState());

yellowDog.cry();

yellowDog.setState(new MeetFriendState());

yellowDog.cry();

}

}

6、运行结果

09936daccdf109e68de2880629aa202d.png

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据你的要求进行回答。 首先,根据你的要求,我们需要编写一个DogState接口,代码如下: ```java public interface DogState { void showState(); } ``` 然后,根据你的要求,我们需要编写若干个实现DogState接口的类,分别代表小狗不同状态。代码如下: ```java public class MeetEnemyState implements DogState { @Override public void showState() { System.out.println("小狗遇到了敌人,开始狂吠!"); } } public class MeetFriendState implements DogState { @Override public void showState() { System.out.println("小狗遇到了朋友,摇尾巴欢迎!"); } } public class MeetAnotherDogState implements DogState { @Override public void showState() { System.out.println("小狗遇到了另一只小狗,开始打闹!"); } } public class SoftlyState implements DogState { @Override public void showState() { System.out.println("小狗变得安静,开始休息!"); } } ``` 接着,根据你的要求,我们需要编写一个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(); } } ``` 最后,根据你的要求,我们需要编写一个测试类,测试不同状态小狗表现。代码如下: ```java public class Test { public static void main(String[] args) { Dog dog = new Dog(); dog.setState(new MeetEnemyState()); dog.show(); dog.setState(new MeetFriendState()); dog.show(); dog.setState(new MeetAnotherDogState()); dog.show(); dog.setState(new SoftlyState()); dog.show(); } } ``` 以上就是根据你的要求编写的代码,希望能够满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值