Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ビーンの継承

具体例を示せなくて申し訳ないのですが、
MVCモデルのなかで、
数個のprivateフィールドと取得設定メソッドを持つビーンとそれを操作するサーブレットがあるのですが、
そのビーンを継承するもうひとつのビーンをつくり
メソッドをオーバーライドして、フィールドは親クラスのフィールドを使うようなことを考えています。その(子)ビーンを操作するサーブレットもあります。

ビーンが巨大化(私のレベルでは)しそうなので特性を考え2つに分けたわけです。

ビーン間の継承ってありなのでしょうか?

説明不足と思いますので、レス下されば補います。

6

回答

80434

閲覧

6件の回答

評価

0

別に問題はないです。

評価

0

mioさんがおっしゃるように別に問題はありませんが、クラス設計的には「継承するよりも委譲」するほうがよいと言われています。
以下、参考までに
http://homepage3.nifty.com/satoshis/oo/memo.html

評価

0

この質問での「継承」は、広い意味でのそれで、委譲なのかどうかまでは考えていないように思います。

というわけで、リンク先やその他のページも参考にしつつ、オーバーライドの方法については、よく検討して進めましょう>どへへさん

評価

0

mioさんfugaさんレスありがとうございます。
IS-Aを使うかHAS-Aを使うかは検討が必要ですね。
HAS-Aは今まで知らず知らずに使っていたような気がします。
今回のケース(詳細を明かしてないのでイメージしにくいと思いますが)ではHAS-AよりもやはりIS-Aかな、、と自分では思います。
fugaさんのリンク先を参考に自分なりに解釈すると、
まずスーパークラスの意味振る舞い役割をよく理解したうえで、なぜクラスを分けて継承を使うのかという理由を明確にするべきと思います(ちがうかな?)。
実は継承するサブクラスは違うパッケージにあり、意味的には、アプリケーションのアドミンレベルのクラスを集約してます。
アドミンが通常のビーンの振る舞いを利用するのだけど、どうしてもアドミン独特の振る舞いが必要。
ということで、
SuperBean obj = new SubBean()
のオブジェクトから
SuperBeanのフィールドを利用しながら
実際の処理を行うメソッドはオーバーライドして利用したい。自分自身はコウ解釈して、それなりにわかりやすいのではと思ってます。
これが「多様性」ということですよね。

この考え(わかりにくい?)には致命的な誤りはありませんよね。

評価

0

具体的なものが見えないので、なんとも言えませんが。
親クラス単体では基本的に意味がないのであれば、abstractにしてもいいかも知れません。

結局は、実現したいものに見合った設計で、としか言えませんが…。
ある手法を使えば、モノが作りやすい、後で手を入れるにしても考えやすい、というのであれば、気にする必要はないです。
逆にその手法に縛られて、モノが実現できない・しにくいのなら、それを選択したのが間違いだったかも知れません。

評価

0

なるほど、

すっきり!っ手感じです。

>モノが作りやすい、
>後で手を入れるにしても考えやすい

まよいがふっきれたかんじなので、
注意深く進めたいと思います。

皆さんありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。