【C#】インターフェイス
インターフェイス(Interface)
プログラミングではクラスとの境界面のイメージ
インターフェイスの実装
public interface IPublicClz1
{
public void Display();
}
public class PublicSingleClz : IPublicClz1
{
public void Display() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
}
インターフェイスの多重継承
public interface IPublicClz1
{
public void Display();
}
public interface IPublicClz2
{
public void Display2();
}
public class PublicSingleClz : IPublicClz1, IPublicClz2
{
public void Display() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
public void Display2() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
}
明示的実装
public interface IPublicClz1
{
public void Display();
}
public interface IPublicClz2
{
//public void Display2();
public void Display();
}
public class PublicSingleClz : IPublicClz1, IPublicClz2
{
//public void Display() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
void IPublicClz1.Display() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
//public void Display2() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
void IPublicClz2.Display() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
}
明示的実装したメソッドはinterfaceにキャストする必要がある。var publicMultiClz = new PublicMultiClz();
//publicMultiClz.Display();
var iPublicClz1 = publicMultiClz as IPublicClz1;
iPublicClz1.Display();
var iPublicClz2 = publicMultiClz as IPublicClz2;
iPublicClz2.Display();
アクセス修飾子
internal interface IInternalClz
{
internal void Display1();
public void Display2();
}
internal class InternalClz : IInternalClz
{
//internal void Display1() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
void IInternalClz.Display1() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
public void Display2() => Console.WriteLine(this.GetType() + "." + MethodBase.GetCurrentMethod().Name);
}