継承

[id:lethevert:20050828:p3]
多態のための継承は、インターフェースだけで十分かもしれない。多態性を実現するためだけなのに、どうして実装まで継承する必要があるのだろう?
実装まで継承したいときは、能力を汎用的に使用したいときだが、そういうものは継承に頼らない方が見通しのよいコードになるのではないか。つまり、能力は、has-aで追加する方がよいのではないかと思う。http://www.atmarkit.co.jp/fdotnet/bookpreview/codecomp2nd_06/codecomp2nd_06_05.htmlにある、ScratchlessCatのような話だ。ただし、見通しを損ねない程度に限定的なら、is-aで代替するのも可かもしれないが。
また、クラスの内部実装に立ち入らなくてもよいような汎用的な機能に対して、継承を使うこともあるが、これはもっと外部であることを意識するような仕組みにした方がいい。この場合、Javaなどでは、操作クラスを作成するような方法になるのか。