interface Lianjie {
public abstract void check();
public abstract void on();
}
class Jiance {
public void check() {
}
public void light() {
}
public void on() {
}
}
class Arm extends Jiance {
public void check() {
System.out.println("检测完毕,进行安装");
}
public void on() {
System.out.println("请连接电源");
}
}
class Leg extends Jiance {
public void check() {
System.out.println("检测完毕,进行安装");
}
public void on() {
System.out.println("请连接电源");
}
}
class Head extends Jiance {
public void check() {
System.out.println("检测完毕,进行安装");
}
public void on() {
System.out.println("请连接电源");
}
}
class Newarm extends Jiance {
public void check() {
System.out.println("检测完毕,进行安装");
}
public void light() {
System.out.println("电路已通");
}
public void on() {
System.out.println("请连接电源");
}
}
class Robot {
public void run() {
run(new Jiance[0]);
}
public void run(Jiance[] l) {
for (int i = 0; i < l.length; i++) {
l[i].check();
l[i].light();
l[i].on();
}
}
}
class Demo1 {
public static void main(String[] args) {
Arm a = new Arm();
Leg l = new Leg();
Head h = new Head();
Newarm n = new Newarm();
Robot r = new Robot();
Jiance[] b = { a, l, h ,n};
r.run(b);
}
}
这是目前为止我写的代码中最庞大的一段代码,这段代码有一个毁我三观的地方,Jiance[] b = { a, l, h ,n};数组居然也可以这样搞,引用名其实是可以传递的。
我们上一片代码是用接口实现多态的,但是想添加一个功能就很麻烦,因为接口里的东西都是抽象的,你需要在所有实现它的对象中重写这个新功能,所以通过适配器,通过继承的关系来实现多态就比较好了。写这么多我感觉就是在搞事情,直接通过继承不就ok了?这只是把学过的东西融合在一起。