オブジェクト指向ってこういうこと?(5) 「継承」の条件
でも、「継承」も確かに便利。
「使い方は慎重に」なのでしょう。
「継承」を使うときに気を付ける(べきかと思う)条件
- 「継承」したら、「継承元」を容易に変更できなくなる
例えば、CakePHPを使って(app_controllerなどを継承して)アプリを作ると、
本体のCakePHPがメジャーバージョンアップなどで仕組みが大幅に変わった場合、動作しなくなる可能性が高いです。
CakePHP1.1で作ったアプリは、実際、CakePHP1.2に対応させるためにかなりの改変が必要になったそうです。
たぶん、これがまさしく「継承」の不利益例なのかと思います。
Java本で、「自分(達)の作ったクラスを継承したクラスを作成することで、再利用性向上をもくろむのは注意」とあり、
読んだ時「なんのこっちゃ」でしたが・・・
「誰かに継承させた」ら、継承元には責任が発生する・・・ということでしょうか。
要するに。
- 「継承」は「再利用」と仲が悪い
「再利用」→「使いまわし」がしずらくなる。
工数的に言うと、試験にかかる工数が増える・・・ ^^;
でも、フレームワークを使えば、「実装」の部分で工数を削れるなどの別メリットがある。
そこの兼ね合いなのでしょうか。
他、注意点
- 「継承の継承」はより要注意。
ややこしくなるので ^^;
- staticメソッドかどうか
継承したいメソッドがstaticなものだけなら、それらのメソッドだけを別クラスとして独立させて使える(委譲)ので。
・・・・・・なんだか、構造化プログラミングの共通関数ぽいですね ^^;