2005年11月25日

C#のinterfaceの説明

  
C#のインターフェースの説明すると、「どうもピンとこない」という反応が返ってくることがあります。
そこで、いろいろな文献などを参考に、僕なりの言葉でまとめてみました。

「インターフェースは、クラスの規格を定めたもの」と考えると理解しやすいかもしれません。工業製品には、様々な「規格」が存在し、その「規格」に合った製品を作ることで、製品同士を繋げたり、ある場所に正しく設置できたりします。
interfaceは、 プログラミング言語の文法に、この「規格」の概念を持ち込んだものなのです。


どうでしょう。


この記事へのコメント
こんばんは。
(僕の場合だけですが)規格はつまりは雛形、と捉えてしまっても、ということになって、抽象クラスとの棲み分けがあややややになってしまうことがあります^^;

規格という面の他にも、インターフェイスクライアントがクラスに命令するときの外観、抽象クラスはそれを継承したクラスの雛形だと言う位置づけを勝手にしちゃってます。

なんかコメントか質問か、はたまた愚痴なのかよくわからん感じになっちゃいました・・・
Posted by yorutrain at 2007年11月25日 22:28
コメントありがとうございます。
インターフェースと抽象クラスの大きな違いは、インターフェースはクラスに複数の顔を持たせることができるってことですかね。
Javaのインターフェースがすぐに思い浮かびませんが、C#だと、ひとつのクラスに、IClonebleで、IDisposableで、IDictionaryでって、沢山の顔を持たせられます。これは、携帯電話に、イヤホン用のジャックがあったり、赤外線通信の機能があったり、ワンセグのチューナーがあったり、MiniSDのコネクタがあったり、というのと同じですね。
ひとつの抽象クラスにこれらのインターフェースを押し込めてしまうのは、出来なくはないですが、好ましくはありません。
Posted by Gushwell at 2007年11月25日 23:13
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50214876