C#のインターフェースのサンプルです。
確認環境 ・Microsoft Visual Studio Community 2017 |
目次
説明 | インターフェースとは |
サンプル | クラスが複数のインターフェースを実装する |
クラスがクラスの継承とインターフェースの実装を行う | |
インターフェースが他のインターフェースを継承する |
インターフェースとは
アクセス修飾子 interface インターフェース名 { 抽象メソッド } |
- インターフェースの宣言は、「interface」を記述します。
- 抽象メソッドは、継承先でメソッドのオーバーライドを強制します。
- 抽象メソッドは、メソッドの定義はしますが、処理内容は記述しません。
→処理の概要を表すといえます。
→処理内容は、抽象クラスを継承したクラスで記述します。 - インターフェースは他のインターフェースを継承できます。
インターフェースを実装する書き方
アクセス修飾子 class クラス名 : インターフェース名{ } |
- インターフェース名の前に、コロン「:」を付けます。
- インターフェースを継承してクラスを定義することを「インターフェースを実装する」と言います。
- 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行目の抽象メソッドをオーバーライドしています。
クラスが複数のインターフェースを実装する
クラスは、複数のインターフェースを実装できます。
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# オーバーロードのサンプル