这一章节我们来讨论一下适配的问题?
说白了,就是可以使用任何对象调用某个方法,而这个对象只需要符合某种协议。
而这种协议的实现有两种方法:继承和接口,但是一般都是使用接口,因为他的代码复用性比继承强,而且继承本身还包含父类的很多实现,造成不必要的混淆。而且通过接口我们可以实现多重接口(类似多重继承)
下面是两组对比的代码:
package com.ray.ch07;
class father {
private int id = 0;
private void sleep() {
}
public int run(int speed) {
return speed;
}
}
public class Test extends father {
@Override
public int run(int speed) {
// TODO Auto-generated method stub
return super.run(speed);
}
}
通过继承,一般都是像上面的代码,Test单继承father,test对象只能向上转型为father类,如果需要多重继承,可能继承的层级就会骤然增多。
我们再来看看接口方面:
package com.ray.ch07;
interface Son {
void sleep();
int run(int speed);
}
interface Mother {
void eat();
}
public class Test implements Son, Mother {
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
@Override
public int run(int speed) {
// TODO Auto-generated method stub
return 0;
}
public static void main(String[] args) {
Mother mother = new Test();
mother.eat();
Son son = new Test();
son.sleep();
son.run(2);
}
}
在上面的代码里面Test可以非常容易的向上转型为Son和Mother这两个类,从多态的角度出发,使用接口来适配代码的重用性大大的增加,而且代码更加灵活。
总结:这一章节主要讨论适配的实现中使用哪个,我们推荐使用接口,因为他带来更多的灵活性和代码的复用性。
这一章节就到这里,谢谢。
-----------------------------------