インタフェース
C#のインタフェース vs Javaのインタフェース
・C#のインタフェースはimplicit式とexplicit式に分ける。
・Javaのインタフェースはこんな概念がない。
public interface ITest {
int a = 10; // public static finalは省略可
public static final int a = 10;
}
implicit式
public interface English
{
string Speak();
}
public class Speaker : English
{
public string Speak()
{
return "English";
}
}
使い方
English c = new Speaker();
c.Speak();
Speaker s = new Speaker();
s.Speak();
implicit式を使うか?explicit式を使うか?
1.インタフェースしかアクセスできないなら、explicit式。以外はimplicit式。
2.業務の考慮
改善前
public class Speaker : English, Japanese
{
public string Speak()
{
return "English";
}
}
使い方
Japanese c = new Speaker();
c.Speak(); // "English"が出力された!おかしい。
explicit式
public interface English
{
string Speak();
}
public class Speaker : English
{
string English.Speak()
{
return "English";
}
}
使い方
English c = new Speaker();
c.Speak();
Speaker s = new Speaker();
s.Speak(); // エラー
改善後
public class Speaker : English, Japanese
{
string English.Speak()
{
return "English";
}
string Japanese.Speak()
{
return "Japanese";
}
}
使い方
English c = new Speaker();
c.Speak();
Japanese c = new Speaker();
c.Speak();
※それぞれ業務内容に応じる。