亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

コンポジション・・・?

継承(インヘリタンス)の分類
「継承」には、大きく2つの目的があります。

設計の共有 : インターフェース
実装の共有 : mixin
右に書いたのは、特別にそのためだけに使うことを目的として機能を制限した継承の種類を指しています。

通常の継承は、2つの目的のどちらのためにも使えますし、区別せずに使うこともできます。

なお、インターフェースという概念は、変数(やフィールド)に型を要求する(静的型付け)言語でのみ意味のある概念です。なぜなら、動的型付け言語では、メソッドの解決も動的に行われるので、設計の共有とは単に同名のメソッドを持っているというだけでよく、インターフェースという特別な仕組みを必要としないからです。

実装の共有には、コンポジションを使うこともできます。

「継承よりもコンポジション」ってのは機能職場で言われた後わかんなかったので宿題。
たしかにC#は多重継承禁止だし、インターフェースにして共通クラスに切り出す方がいいのか。

頭に置いとこう。