C# インターフェースのサンプル(interface)

C#のインターフェースのサンプルです。

確認環境
・Microsoft Visual Studio Community 2017

目次

インターフェース

1.インターフェースの宣言

アクセス修飾子  interface  インターフェース名  {
     抽象メソッド
}
  • インターフェースの宣言は、「interface」を記述します。
  • 抽象メソッドを記述できます。
  • インターフェースは他のインターフェースも継承できます。

2.インターフェースを実装したクラス

アクセス修飾子  class  クラス名  :  インターフェース名{
}
  • インターフェースを継承してクラスを定義することを「インターフェースを実装する」と言います。
  • インターフェースを実装するクラスには、コロン「:」の後にインターフェース名を記述します。
  • インターフェースを実装したクラスはインターフェースで宣言されている抽象メソッドをオーバーライドする必要があります。
  • 1つのクラスに複数のインターフェースを実装することができます。その場合カンマで区切って記述します。
    →【違い】継承は、1つのクラスからのみできます。多重継承は不可です。

コード

インターフェースのサンプルです。

using System;

namespace Project1
{
    public interface ItestA
    {
        void print1();
    }

    public class Class1: ItestA
    {
        void ItestA.print1()
        {
            Console.WriteLine("red");
        }
    }
    class TestA
    {
        static void Main()
        {
            ItestA c1 = new Class1();
            c1.print1(); //red
        }
    }
}

5~8行目は、インターフェースです。
7行目は、抽象メソッドです。
10行目は、5行目のインターフェースを実装しています。
12行目は、7行目の抽象メソッドをオーバーライドしています。

 

クラスが複数のインターフェースを実装する

1つのクラスに複数のインターフェースを実装するサンプルです。

using System;

namespace Project1
{
    public interface ItestA
    {
        void print1();
    }
    public interface ItestB
    {
        void print2();
    }
    public class Class1: ItestA,ItestB
    {
        void ItestA.print1()
        {
            Console.WriteLine("red");
        }
        void ItestB.print2()
        {
            Console.WriteLine("blue");
        }
    }
    class TestA
    {
        static void Main()
        {
            ItestA c1 = new Class1();
            c1.print1(); //red
            ItestB c2 = new Class1();
            c2.print2(); //blue
        }
    }
}

13行目のクラスは、5行目と9行目のインターフェースを実装しています。

 

クラスがクラスの継承とインターフェースの実装を行う

クラスが他のクラスの継承とインターフェースの実装を行うサンプルです。

using System;

namespace Project1
{
    public interface ItestA
    {
        void print1();
    }
    public class ClassTest
    {
    }
    public class Class1: ClassTest,ItestA
    {
        void ItestA.print1()
        {
            Console.WriteLine("red");
        }
    }
    class TestA
    {
        static void Main()
        {
            ItestA c1 = new Class1();
            c1.print1(); //red
        }
    }
}

12行目は、クラスの継承とインターフェースの実装を行っています。

 

インターフェースが他のインターフェースを継承する

インターフェースが他のインターフェースを継承するサンプルです。

using System;

namespace Project1
{
    public interface ItestA
    {
        void print1();
    }
    public interface ItestB:ItestA
    {
        void print2();
    }
    public class Class1: ItestB
    {
        void ItestA.print1()
        {
            Console.WriteLine("red");
        }
        void ItestB.print2()
        {
            Console.WriteLine("blue");
        }
    }
    class TestA
    {
        static void Main()
        {
            ItestA c1 = new Class1();
            c1.print1(); //red
            ItestB c2 = new Class1();
            c2.print2(); //blue
        }
    }
}

9行目は、インターフェースがインターフェースを継承しています。

関連の記事

C# クラスの仕組みと使い方のサンプル
C# コンストラクタのサンプル
C# クラスの継承のサンプル
C# オーバーライドのサンプル
C# オーバーロードのサンプル

△上に戻る