接口
接口和内部类提供了很好的接口与实现分离的方法。
完全解耦
在多态中,一个方法操作的是类,那么你可以使用这个类及其子类,代码会有很好的复用性。但是对于不在这个继承结构中的某个类,就没有办法了。
而接口却可以放宽这种限制。
多重继承
多重继承实际上就是组合多个类的接口。
1 | // B为抽象类或基类,C1,...为接口 |
则如上A可以向上转型为B, C1, C2 …, 因此可以很方便的复用代码
适配接口
接口最大的用处就是一个接口可以有很多不同的实现。于是如果一个方法以一个接口类型为参数,则使用者可以通过改变接口的实现方式和传入的对象,来产生不同的行为。
比如Java中的Scanner类,它的构造器接收的是一个Readable接口。如果创建了一个新的类,想让Scanner作用于它,只需实现Readable接口。
1 | //: interfaces/RandomWords.java |
如果某个类没有实现Readable接口,那应该怎么办呢?只需extends,并实现Readable接口即可。其实就是一个适配器,适配Readable接口。
1 | //: interfaces/RandomDoubles.java |
为RandomDouble 适配Readable接口
1 | //: interfaces/AdaptedRandomDoubles.java |