ホームページ >バックエンド開発 >C#.Net チュートリアル >C#インターフェース例を詳しく解説
1. C# インターフェイスの役割
使用法の概要: メソッドを含むインターフェイスを定義しますが、メソッドの特定の実装のためのコードはありません。次に、インターフェイスを継承するクラスで、インターフェイスのすべてのメソッドのコードを実装する必要があります。しかし、インターフェイスの役割をよく理解していない場合、インターフェイスを使用するのは不必要であると考えるのは、もちろん間違いです。インターフェースの役割については、インターネット上で、とても分かりやすく、しかも詳しく分析してくださった方がいらっしゃいます。
[csharp] view plain copy
<p></p><pre code_snippet_id="219991" snippet_file_name="blog_20140306_1_6634576" name="code" class="csharp">//我们定义一个接口 public interface IBark { void Bark(); }
//別のクラスを定義し、IBark から継承し、その中に Bark() メソッドを実装する必要があります
public class Dog:IBark { public Dog() {} public void Bark() //实现其中的Bark()方法 { Consol.write("汪汪"); } }
//次に、Dog のインスタンスを宣言して Bark() メソッドを呼び出しますDog Wangcai = new Dog ();
Wangcai .bark (); なぜインターフェイスを使用するのでしょうか? 実際の実装には Bark() がありません。では、インターフェースを使用する必要はないのでしょうか?
インターフェースの定義に関しては、インターフェースは実際にはクラス間の合意と制約です。 IBark インターフェイスを継承するすべてのクラスは Bark() メソッドを実装する必要があるため、クラス ユーザーの観点から見ると、クラスが IBark インターフェイスから継承していることがわかっていれば、Bark() メソッドを呼び出すことができます。 Bark() メソッドの実装方法に関係なく、自信を持って大胆に実行できます。たとえば、ユーザーが Cat クラスまたは Dog クラスを使用し、IBark から継承していることがわかっている場合は、Bark を直接呼び出すことができます。これら 2 つのクラスには Bark() メソッドの特定の実装が必要なので、クラス内の特定の実装を気にする必要はありません
設計の観点から見ると、複数のクラスを 1 つのクラス内に記述する必要があります。これらのクラスはより複雑であるため、作業負荷が比較的大きくなります。たとえば、プログラマ A は Dog クラスを定義し、プログラマ B は Cat クラスを作成します。この 2 つのクラスには何もありません。相互に関係しますが、ユーザーのニーズにより、両方に「呼び出し」メソッドを実装する必要があります。もう 1 つは、統合管理を容易にすることです。もちろん、インターフェイスを使用しなくても目的は達成できますが、このクラスに Duck クラスなどが存在する場合、この種の制約は避けられません。したがって、このメソッドはインターフェイスを介してより信頼性が高く、よりバインディングが高くなります
C# インターフェイス 簡単に言えば
私たちの会社には 2 種類のプログラマがいると仮定します: VB プログラマは VB でプログラムを書くプログラマを指します。 、 clsVBProgramer クラスで表されます。 Delphi プログラマは、 Delphi でプログラムを作成するプログラマを指し、 clsDelphiProgramer クラスで表されます。すべてのクラスには WriteCode() メソッドがあります。定義は次のとおりです: [csharp] view plain copy
class clsVBProgramer() { .... WriteCode() { //用VB语言写代码; } .... } class clsDelphiProgramer() { .... WriteCode() { //用Delphi语言写代码; } .... }
/*現在、会社にはプロジェクトがあり、プログラマにプログラムを作成する必要があります*/
class clsProject() { .... WritePrograme(clsVBProgramer programer)//用VB写代码 { programer.WriteCode(); } WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码 { programer.WriteCode(); } ...... }
メイン プログラムでは次のように記述できます:
main() { clsProject proj=new clsProject; //如果需要用VB写代码 clsVBProgramer programer1=new clsVBProgramer; proj.WritePrograme(programer1); //如果需要用Delphi写代码 clsDelphiProgramer programer2=new clsDelphiProgramer; proj.WritePrograme(programer2); }
しかし、この時点で別の C# プログラマーが会社に来たら、C# でプログラムを書く機能を実現できるように、このプログラムをどのように変更すればよいでしょうか?新しいクラス clsCSharpProgramer を追加すると同時に、この clsProject クラスで WritePrograme (clsCSharpProgramer プログラマー) メソッドを再度オーバーロードする必要があります。今度はさらにトラブルです。 C プログラマー、C++ プログラマー、および Java プログラマーがいる場合はどうなるでしょうか。大きな問題!
しかし、代わりにインターフェイスを使用すると、まったく異なります:
最初にプログラマ インターフェイスを宣言します:interface IProgramer() { WriteCode(); }
次に 2 つのクラスを宣言し、IProgramer インターフェイスを実装します:
class clsVBProgramer():IProgramer{....WriteCode(){ //用VB语言写代码;}....} class clsDelphiProgramer():IProgramer{....WriteCode(){ //用Delphi语言写代码;} ....}clsProject クラスにいくつかの変更を加えます:
class clsProject(){....WritePrograme(IProgramer programer){ programer.WriteCode();//写代码}......} main(){ clsProject proj=new clsProject; IProgramer programer; //如果需要用VB写代码 programer=new clsVBProgramer; proj.WritePrograme(programer); //如果需要用Delphi写代码 programer=new clsDelphiProgramer; proj.WritePrograme(programer); }C#、C、C++、JAVA などのプログラマーが追加された場合は、それらに関連するクラスを追加するだけで済み、main() に少し変更を加えれば OK です。特に拡張性が優れています!
以上がC#インターフェース例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。