インタフェース

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();

※それぞれ業務内容に応じる。