- - PR -
クラスの継承
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-21 15:31
すみません。
ClassBはClassZのことです。 インターフェースが複数実装できるのは理解できます。 だからpublic classZ : IClassB, IClassCの記述はOK。 やりたいことはイメージ的にはpublic classZ : ClassA, IClassB, IClassC のような記述をしたいのです。でもこれはNGです。 このNG記述をできるだけスマートな記述にしたいのです。 | ||||||||||||||||
|
投稿日時: 2004-04-21 15:54
言語仕様はご覧になりました?
>public classZ : ClassA, IClassB, IClassC のような記述をしたいのです。 そのような記述ができると思いますが。 パンダさんの現在書かれているソースのその部分を貼り付けてもらって良いですか? 言語仕様(先ほど示したリンク先)を見てもらえば分かると思いますが、class-base部分には継承するクラス(ClassA)を一番先頭、インターフェイスはその後に書いてくださいね。 ちなみに、
これでコンパイル通りましたけど。 [ メッセージ編集済み 編集者: 一郎 編集日時 2004-04-21 15:59 ] | ||||||||||||||||
|
投稿日時: 2004-04-21 16:35
以前、同じようなコーディングしてエラーになっているのを憶えています。
ただ、別のエラーを勘違いしていただけかもしれません。 現在のプロジェクトでもう一度やってみます。 | ||||||||||||||||
|
投稿日時: 2004-04-23 01:16
パンダさんが悩まれているのは、ひょっとしてこのことかも。
(違っていたらすみません) 一郎さんのコードを呼び出す側
になります。明示的な実装なためで、この場合、IClassB,IClassC型にしないと f1,f2は呼び出せません。
上のコードだと明示的にインターフェイス型のため、呼び出すことができます。
この場合は、型変換しなくても呼び出しは可能です。 | ||||||||||||||||
|
投稿日時: 2004-04-23 09:27
すみません。ちょっと意味が分からないのですが。
インターフェースを実装したのであれば、そのインターフェースのメソッドを書かないといけないですよね?
| ||||||||||||||||
|
投稿日時: 2004-04-23 09:55
>インターフェースを実装したのであれば、そのインターフェースのメソッドを書かないといけないですよね?
いのつちさんのされている話は、どう実装するかの話ですね。 キーワードは「明示的実装」です。 参考: http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csspec/html/vclrfcsharpspec_13_4.asp | ||||||||||||||||
|
投稿日時: 2004-04-23 09:58
「明示的なインターフェイスの実装のチュートリアル」
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcwlkexplicitinterfaceimplementationtutorial.asp これも | ||||||||||||||||
|
投稿日時: 2004-04-23 12:52
Jittaさん、一郎さん
わかりました。 俺が「明示的な実装」という呼び方を知らなかったこと(実装の仕方は知ってました。)と、 呼び出される側のコードが無かったんで勘違いしてしまいました。 |