インターフェイスには、クラスまたは構造体が実装できる一連の関連関数の定義が含まれています。たとえば、インターフェイスを使用すると、複数のソースからの動作をクラスに含めることができます。 C# 言語は多重継承をサポートしていないため、インターフェイスを通じて多重継承を実現できます。つまり、インターフェイスにはメンバー (プロパティ、イベント、インデクサー) の宣言のみが含まれます。メンバーの定義がどのように実装されるかは、その派生クラスによって決まります。
インターフェイスを宣言します:
インターフェイスは、クラスの宣言と同様に、interface キーワードを使用して宣言されます。インターフェイス宣言はデフォルトでパブリックであり、インターフェイスには定数、フィールド、演算子、インスタンス コンストラクター、デストラクター、または型を含めることはできません。インターフェイス メンバーは自動的にパブリック メンバーになり、アクセス修飾子を含めることはできません。メンバーを静的メンバーにすることもできません。例:
public Interface person // インターフェイスを定義する
{ void setname();} // メソッドを宣言する
インターフェイスのインスタンス:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义一个person接口 public interface person {//只声明方法 void setname(string name); void setsex(char sex); void setage(uint age); void getinformation(); } //people继承于person class people:person { private string name; private char sex; private uint age; //实现接口中的方法 public void setname(string name) { this.name = name; } public void setsex(char sex) { this.sex = sex; } public void setage(uint age) { this.age = age; } public void getinformation() { Console.WriteLine("姓名:\t"+name); Console.WriteLine("性别:\t"+sex); Console.WriteLine("年龄:\t"+age); } } //多重继承 class student :people,person { } class Program { static void Main(string[] args) { people peo = new people(); peo.setname("HC666"); peo.setsex('男'); peo.setage(18); peo.getinformation(); student stu = new student(); stu.setname("HC555"); stu.setsex('男'); stu.setage(19); stu.getinformation(); } } }
結果:
私のインターフェイスは次のようです効果はありません ああ、削除してもまだ動作するのであれば、
設計の観点から見ると、これらのクラスはより複雑で作業負荷が比較的大きいため、プロジェクト内に複数のクラスを記述する必要があります。たとえば、プログラマ A は Dog クラスを定義し、プログラマ B は Cat クラスを作成します。これら 2 つのクラスは相互に関係がありませんが、ユーザーは両方を実装する必要があるためです。 「呼び出し」に関するメソッドでは、すべてを IBark インターフェースから継承させる必要があります。もう 1 つは、呼び出しを容易にすることです。ただし、この場合、Duck クラスなどがある場合、このメソッドを見逃すことは避けられないため、インターフェイスを使用する方がより信頼性が高く、拘束力も高くなります。
上記は C# 学習日記 26 ---インターフェイス (interface ) タイプのコンテンツです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください。