FilterInputStream IS-A InputStream 和 HAS-A InputStream

FilterInputStream IS-A InputStream and HAS-A InputStream

我正在阅读 Java I/O lib 的源代码并注意到 FilterStream 扩展了抽象 class InputStream 有利于继承并且还有一个InputStream 作为支持 composition.Why 的实例变量,我们是否需要同时与 InputStream 建立 IS-A 和 HAS-A 关系?

FilterInputStream“是一个”输入流,添加或修改您需要传入的现有输入流的行为。例如,它的子类BufferedInputStream添加了缓冲能力。由于FilterInputStream需要持有你传入的流,所以也有一个“has a”的关系。

FilterInputStream 装饰器模式 的一个例子:https://en.wikipedia.org/wiki/Decorator_pattern