継承
Inheritance
親は抽象的概念で、子、孫と子孫の世代が増えるごとに具体化されていく。
動物→犬→柴犬、のようなもの。
子は親に対する、追加部分や、特殊条件の差分だけを書けば良い。(理論的には)
継承すべきか(できるか)どうかの簡単な判断方法
~の一種(a kind of ~)と表現できるかどうか。
表現できない場合は、そのクラスを利用しているだけで、そのクラスそのものではない。
継承がうまく行かない理由
継承関係が複雑で綺麗に継承できない。
綺麗に継承構造(直交性、完全性)を作ろうとすると、親が巨大化していく。
誰がいつ使うか分からないようなメソッド、プロパティが増えていく。
差分を綺麗に書けない。
あらかじめどういう差分を作ることになるのかを親の設計時点で予測しなければならないが、それは不可能である。
結局コピペして一部を書き換えるようなことになる。