• ベストアンサー

継承について

みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • e00083
  • ベストアンサー率31% (25/80)
回答No.1

組織的にクラスを制御するなら、継承より集約のほうがよいのでは?

nipopu
質問者

お礼

お礼が遅くなりまして、ごめんなさい。 集約について勉強してみました。 なるほど、確かに「集約」ですね! 勉強にもなり、とっても助かりました。 ありがとうございました。

その他の回答 (1)

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.2

継承の考え方を間違えていると思います。 継承は、is-a関係が成り立ちます。 例えば、「犬」は「動物」です。 この場合、「犬」クラスは、「動物」クラスから 継承することができます。 「会社」は「営業部」ではありません。 「会社」は「営業部」を持ちます。 これは、has-a関係です。 この場合、No.1さんが回答されている通り、集約を使います。 (参考) http://ja.wikipedia.org/wiki/%E7%B6%99%E6%89%BF

nipopu
質問者

お礼

お礼が遅くなりまして、ごめんなさい。 確かに、「営業部」は「会社」ではないです。 おっしゃるように、継承を勘違いしていました! 分かりやすい例を挙げて頂き、とても助かりました。 どうもありがとうございました。

関連するQ&A