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、运行结果