ホーム プログラミング言語 C Shape C#インターフェース(インターフェース)

C#インターフェース(インターフェース)


 
インターフェイスは、クラスまたは構造体がインターフェイスを継承した後に関数を実装する必要があることを定義する契約とみなすことができ、インターフェイスの特徴は次のとおりです。

 

  • インターフェイスは、多重継承を実現できる参照型です。
  • インターフェイス内で宣言できるのは「抽象」メンバーのみであるため、インターフェイスを直接インスタンス化することはできません。
  • インターフェイスには、メソッド、プロパティ、イベント、インデクサーなどのメンバーを含めることができます。
  • インターフェイス名の先頭には文字「I」を使用するのが一般的です (必須ではなく、別の方法で宣言することもできます)。
  • インターフェイス内のメンバーのアクセス権はデフォルトでパブリックなので、インターフェイスを定義するときにインターフェイス メンバーにアクセス修飾子を指定する必要はありません。指定しない場合、コンパイラはエラーを報告します。
  • インターフェイス メンバーを宣言する場合、メンバーの定義時にメンバーの名前とパラメーターを指定する限り、インターフェイス メンバー用の特定の実行可能コードを記述することはできません。
  • インターフェイスが実装される (クラスによって継承される) と、派生クラス自体が抽象クラスでない限り、派生クラスはインターフェイス内のすべてのメンバーを実装する必要があります。

インターフェースを宣言する

C# でインターフェイスを宣言するには、interface キーワードを使用する必要があります。文法構造は次のとおりです。

public interface InterfaceName{
    returnType funcName1(type parameterList);
    returnType funcName2(type parameterList);
    … …
}

このうち、InterfaceName はインターフェイス名、returnType は戻り値の型、funcName はメンバー関数の名前、parameterList はパラメーターのリストです。

[例] 以下に、具体的な例を通してインターフェースの使用方法を示します。

use system;

namespace it-kiso.com
{
    public interface Iwebsite{
        void setValue(string str1, string str2);
        void disPlay();
    }
    public class Website : Iwebsite{
        public string name, url;
        public void setValue(string n, string u){
            name = n;
            url = u;
        }
        public void disPlay(){
            Console.WriteLine("{0} {1}", name, url);
        }
    }
    class Demo
    {
        static void Main(string[] args) 
        {
            Website web = new Website();
            web.setValue("IT基礎", "https://it-kiso.com");
            web.disPlay();
        }
    }
} 

操作の結果は次のようになります。

IT基礎 https://it-kiso.com

インターフェースの継承

C# では、インターフェイスは別のインターフェイスを継承できます。たとえば、インターフェイス 1 を使用してインターフェイス 2 を継承できます。クラスを使用してインターフェイス 1 を実装する場合、インターフェイス 1 とインターフェイス 2 のすべてのメンバーを同時に実装する必要があります。以下に例を示します。

 using System;

namespace it-kiso.com
{
    public interface IParentInterface
    {
        void ParentInterfaceMethod();
    }

    public interface IMyInterface : IParentInterface
    {
        void MethodToImplement();
    }
    class Demo : IMyInterface
    {
        static void Main(string[] args) 
        {
            Demo demo = new Demo();
            demo.MethodToImplement();
            demo.ParentInterfaceMethod();
        }
        public void MethodToImplement(){
            Console.WriteLine("IMyInterface インターフェースの MethodToImplement 関数を実装します");
        }
        public void ParentInterfaceMethod(){
            Console.WriteLine("IParentInterface インターフェースの ParentInterfaceMethod 関数を実装します");
        }
    }
} 

操作の結果は次のようになります。

IMyInterface インターフェースの MethodToImplement 関数を実装します

IParentInterface インターフェースの ParentInterfaceMethod 関数を実装します

「C#インターフェース(インターフェース)」についてわかりやすく解説!絶対に観るべきベスト2動画

【C#】インターフェース 中級【プログラミング】
【プログラミング講座(C#)】第10回 インターフェースについて【独り言】