C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 継承したクラスで同処理のメソッドを統合するには?


(過去ログ 51 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■28297 / inTopicNo.1)  継承したクラスで同処理のメソッドを統合するには?
  
□投稿者/ イナフ (1回)-(2008/11/23(Sun) 20:11:29)

分類:[VB.NET/VB2005 以降] 

2008/11/23(Sun) 20:55:31 編集(投稿者)
いつも拝見させて頂き非常に参考にさせていただいております。

「X」というクラスを「JAクラス,JBクラス,SAクラス,SBクラス」でそれぞれ継承しています。
「JA,JB」で同処理のメソッド、「SA,SB」で同処理のメソッドを持っているのですが、
例えば「JA」のメソッドを変更すると「JB」のメソッドも変更しなければならない状態なのです。
JAとJBで共通のメソッドとし、変更は一か所という風にしたいのですが、どのようにすればよいのか
お知恵をお貸しいただけないでしょうか?

多重継承はできませんがイメージ的に「X→JX(Xを継承し同処理メソッドを作成)→JA,JB(JXを継承)」
という感じにしたいのです。まだ勉強中ではありますが、インターフェースを使用するということになるのでしょうか?

※クラスは全てフォームクラスで、同処理メソッドはMustOverrideで定義しています。


引用返信 編集キー/
■28298 / inTopicNo.2)  Re[1]: 継承したクラスで同処理のメソッドを統合するには?
□投稿者/ aetos (14回)-(2008/11/23(Sun) 21:40:28)
No28297 (イナフ さん) に返信
> 多重継承はできませんがイメージ的に「X→JX(Xを継承し同処理メソッドを作成)→JA,JB(JXを継承)」
> という感じにしたいのです。まだ勉強中ではありますが、インターフェースを使用するということになるのでしょうか?

というのはイメージでも何でもなく可能な単一継承だと思いますが?

ただ一般的には、「同じ処理がある」というだけでは継承関係にしないほうがいいと言われます。
どこか別の場所にメソッドの実装を作っておき、JA と JB からはそれを呼び出すようにする、というのはいかがでしょう(「委譲」という手法です)。
引用返信 編集キー/
■28299 / inTopicNo.3)  Re[1]: 継承したクラスで同処理のメソッドを統合するには?
□投稿者/ イナフ (2回)-(2008/11/23(Sun) 21:42:31)
すみません、読み返すとあせって質問内容がまとまっておりませんでした。
もう少し整理した後に書き込ませていただきたいと思います…。
このスレッドは済みとさせて下さい。
解決済み
引用返信 編集キー/
■28300 / inTopicNo.4)  Re[2]: 継承したクラスで同処理のメソッドを統合するには?
□投稿者/ イナフ (3回)-(2008/11/23(Sun) 21:46:16)
aetos さんご返信ありがとう御座います。

>というのはイメージでも何でもなく可能な単一継承だと思いますが?
おっしゃる通りでございます。
お騒がせ致しました…。

解決済み
引用返信 編集キー/
■28301 / inTopicNo.5)  Re[3]: 継承したクラスで同処理のメソッドを統合するには
□投稿者/ イナフ (4回)-(2008/11/23(Sun) 21:52:05)
2008/11/24(Mon) 13:54:48 編集(投稿者)
あせって送信してしまいました…。

>ただ一般的には、「同じ処理がある」というだけでは継承関係にしないほうがいいと言われます。
>どこか別の場所にメソッドの実装を作っておき、JA と JB からはそれを呼び出すようにする、というのはいかがでしょう(「委譲」という手法です)。
委譲という手法があるのですね。はじめて知りました。
これから委譲について調べさせて頂きたいと思います。

ご回答誠にありがとうございました。

解決済み
引用返信 編集キー/
■28386 / inTopicNo.6)  Re[1]: 継承したクラスで同処理のメソッドを統合するには?
□投稿者/ .SHO (168回)-(2008/11/25(Tue) 15:10:12)
No28297 (イナフ さん) に返信

> イメージ的に「X→JX(Xを継承し同処理メソッドを作成)→JA,JB(JXを継承)」

いろいろと実装方法はあるでしょうが、そのやり方でも何も問題ないと思います。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -