C#の場合、以下のようになります。
public interface Interface1 { int getData(); }
コレをインプリメントすると、
public class Imple1 : Interface1
{
public int getData() { return 1; }
}
{
public int getData() { return 1; }
}
のようになります。Interfaceは複数インプリメントできるので、
public class Imple1 : Interface1, Interface2{...}
のように実装することができます。ところが、この複数のインタフェースで
- メソッド名が同じ
- 引数が同じ
- 戻り値が異なる
といったオーバーロードが発生するケースがあります。この場合、C#では
public class Imple : Interface1, Interface2
{
int Interface1.getData() { return 1; }
string Interface2.getData() { return "1"; }
public long getData()
{
return 1L;
}
}
{
int Interface1.getData() { return 1; }
string Interface2.getData() { return "1"; }
public long getData()
{
return 1L;
}
}
のようにして解決します。で、使うほうはというと、そのタイプにキャストして実行することになります。
Imple imp = new Imple();
long l = imp.getData();
int i = ((Interface1)imp).getData();
string s = ((Interface2)imp).getData();
long l = imp.getData();
int i = ((Interface1)imp).getData();
string s = ((Interface2)imp).getData();
知りませんでした。。。
0 件のコメント:
コメントを投稿