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

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

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

Re[5]: インターフェイスクラスについて


(過去ログ 11 を表示中)

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

■2372 / inTopicNo.1)  インターフェイスクラスについて
  
□投稿者/ みかでこ (1回)-(2007/04/05(Thu) 13:46:44)

分類:[.NET 全般] 

インターフェイスクラスについてですが、インターフェイスクラス内にインターフェイス定義以外にもクラスや関数等色々
と作ることが可能ですが、そうした場合どういった利用法があるでしょうか。
また一般的にインターフェイスクラス内にはインターフェイス定義以外は書かないものなのでしょうか。
よろしくお願いします。
引用返信 編集キー/
■2385 / inTopicNo.2)  Re[1]: インターフェイスクラスについて
□投稿者/ まどか (299回)-(2007/04/05(Thu) 16:01:10)
「インターフェースクラス」という言葉はありません。
「インターフェースを実装したクラス」という表現で使われているとは思いますけど。

インターフェースの概要
http://msdn2.microsoft.com/ja-jp/library/s3et34z3(VS.80).aspx
この中のリンクに「インターフェースを使用する状況」というのがありますね。

> 一般的にインターフェイスクラス内にはインターフェイス定義以外は書かないものなのでしょうか。

そんなことはありません。
インターフェースはそれで閉じられた「取り決め」です。つまりクラスはどのインターフェースを含んでいるかという視点になるでしょう。
それを実装した任意のクラス(型)はそのインターフェース(型)で扱うことができます。

引用返信 編集キー/
■2390 / inTopicNo.3)  Re[2]: インターフェイスクラスについて
□投稿者/ 中博俊 (1006回)-(2007/04/05(Thu) 16:41:07)
中博俊 さんの Web サイト
>インターフェイスクラス

そういう用語はあります。
C++/CLIではMSILのそれのことをインターフェイスクラスといいます。
インターフェイスは純粋仮想関数だけのクラスでインスタンス化できないものです。
引用返信 編集キー/
■2391 / inTopicNo.4)  Re[3]: インターフェイスクラスについて
□投稿者/ まどか (300回)-(2007/04/05(Thu) 17:31:32)
> そういう用語はあります。
> C++/CLIではMSILのそれのことをインターフェイスクラスといいます。

おぉ!そうでしたか。
失礼しました。

引用返信 編集キー/
■2401 / inTopicNo.5)  Re[4]: インターフェイスクラスについて
□投稿者/ みかでこ (2回)-(2007/04/05(Thu) 22:27:24)
遅くなりましたが、回答ありがとうございました。
ちょっと言い方が悪かったようですいません、インタ−フェイスを実装するクラスではなくて、定義してある方のクラスという意味で
インタ−フェイスクラスという言い方をしてしまいました。

一般的にインタ−フェイスを使う場合、インタ−フェイスのためのクラスではVB.NET言うとMustInheritを付けて作成して定義以外は書
かないという理解でよろしいでしょうか。
引用返信 編集キー/
■2405 / inTopicNo.6)  Re[5]: インターフェイスクラスについて
□投稿者/ よねKEN (29回)-(2007/04/06(Fri) 00:29:14)
よねKEN さんの Web サイト
No2401 (みかでこ さん) に返信
> 遅くなりましたが、回答ありがとうございました。
> ちょっと言い方が悪かったようですいません、インタ−フェイスを実装するクラスではなくて、定義してある方のクラスという意味で
> インタ−フェイスクラスという言い方をしてしまいました。

インタフェースクラスという言い方と言語が不明なのと説明されている内容から
私も最初に読んだときは混乱しました。
Interfaceを指していると考えると実装も書けているという点が矛盾していると思いましたので。

> 一般的にインタ−フェイスを使う場合、インタ−フェイスのためのクラスではVB.NET言うとMustInheritを付けて作成して定義以外は書
> かないという理解でよろしいでしょうか。

これを読んで理由がたぶんわかりました。
みかでこさんのおっしゃっているのはインタフェースではなく、抽象クラスではないでしょうか。

・インタフェースには実装は含めることはできません。
・抽象クラスは抽象メソッドだけでなく実装のあるメソッドなども書けます。

インタフェースと抽象クラスの機能面から見た違いは以上の通りですが、
使い分けはそういった機能面から行うのではなく、オブジェクト指向の観点から、

・親になるクラスなのか → 抽象クラス(抽象でないといけないということはありません))
・あるオブジェクトが持つべき役割、性質であるのか → インタフェース

という視点で考えるとよいと思います。

私は抽象クラスはほとんど使ってませんが、デザインパターンの
Template Method (テンプレートメソッド) パターンあたりで調べてみると
実用例を見つけられるかと思います。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -