オブジェクト指向ってこういうこと?(5) 「継承」の条件

でも、「継承」も確かに便利。


「使い方は慎重に」なのでしょう。


「継承」を使うときに気を付ける(べきかと思う)条件

  • 「継承」したら、「継承元」を容易に変更できなくなる

例えば、CakePHPを使って(app_controllerなどを継承して)アプリを作ると、
本体のCakePHPがメジャーバージョンアップなどで仕組みが大幅に変わった場合、動作しなくなる可能性が高いです。
 CakePHP1.1で作ったアプリは、実際、CakePHP1.2に対応させるためにかなりの改変が必要になったそうです。
 たぶん、これがまさしく「継承」の不利益例なのかと思います。


Java本で、「自分(達)の作ったクラスを継承したクラスを作成することで、再利用性向上をもくろむのは注意」とあり、
読んだ時「なんのこっちゃ」でしたが・・・

「誰かに継承させた」ら、継承元には責任が発生する・・・ということでしょうか。


 要するに。

  • 「継承」は「再利用」と仲が悪い

「再利用」→「使いまわし」がしずらくなる。
 工数的に言うと、試験にかかる工数が増える・・・ ^^;


でも、フレームワークを使えば、「実装」の部分で工数を削れるなどの別メリットがある。
そこの兼ね合いなのでしょうか。

他、注意点

  • 「継承の継承」はより要注意。

 ややこしくなるので ^^;

  • staticメソッドかどうか

 継承したいメソッドがstaticなものだけなら、それらのメソッドだけを別クラスとして独立させて使える(委譲)ので。
・・・・・・なんだか、構造化プログラミングの共通関数ぽいですね ^^;