创造一个接口:
package interfacepratice;
public interface IControllor {
void open();//public abstract void open()
}
定义父类TV:
package interfacepratice;
public abstract class TV {
public abstract void display(IControllor controllor);
}
定义子类XiaoMiTV
package interfacepratice;
public class XiaoMiTV extends TV{
@Override
public void display(IControllor controllor) {
controllor.open();
System.out.println("小米电视打开");
}
}
User:
package interfacepratice;
public class User {
private IControllor controllor;
private TV tv;
public User(IControllor controllor,TV tv) {
this.controllor = controllor;
this.tv=tv;
}
public void operate(IControllor controllor,TV tv){
tv.display(controllor);
}
}
原装遥控器:
package interfacepratice;
public class RemoteControllor implements IControllor{
public void open(){
System.out.println("按下电视遥控器");
}
}
魔改遥控器1:
package interfacepratice;
public class ToyControllor implements IControllor{
@Override
public void open() {
System.out.println("按下玩具遥控器");
}
}
魔改遥控器2:
package interfacepratice;
public class RocketControllor implements IControllor{
@Override
public void open() {
System.out.println("按下火箭遥控器");
}
}
魔改遥控器3:
package interfacepratice;
public class Mind implements IControllor{
@Override
public void open() {
System.out.println("开启打开电视的意念");
}
}
客户端:
package interfacepratice;
public class Client {
public static void main(String[] args) {
TV xiaoMiTv = new XiaoMiTV();
IControllor xiaoMiTVControllor = new RemoteControllor();
User user = new User(xiaoMiTVControllor,xiaoMiTv);
IControllor toyControllor = new ToyControllor();
user.operate(toyControllor,xiaoMiTv);
IControllor rocketControllor = new RocketControllor();
user.operate(rocketControllor,xiaoMiTv);
Mind mind = new Mind();
user.operate(mind,xiaoMiTv);
}
}
输出:
E:\develop\Java\jdk-17\bin\java.exe "-javaagent:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\lib\idea_rt.jar=58181:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath E:\code\stduy1\out\production\stduy1 interfacepratice.Client
按下玩具遥控器
小米电视打开
按下火箭遥控器
小米电视打开
开启打开电视的意念
小米电视打开
Process finished with exit code 0