title: java.io architecture: FilterI/OStream
body: <p>As far as we can see, <code>FilterInputStream</code> class extends <code>InputStream</code> class. It's simple because <code>FilterInputStream</code> instance "is-a" <code>InputStream</code> instance. But also there is a field which type is <code>InputStream</code> in <code>FilterInputStream</code> class, it means that <code>InputStream</code> is a "part-of" <code>FilterInputStream</code>. They used composition and inheritance both. What kind of problems does this decision solve? What for? Is it just well-known pattern?</p>