Pra*_*een 3 c# inheritance multiple-inheritance
我有两个接口A,B都有相同的方法声明.我有一个继承自接口A,B的C类.我有另一个继承自C的D类.现在我想从D中访问C中实现的方法
interface A
{
int add(int x, int y);
int mul(int x, int y);
}
interface B
{
int add(int x, int y);
int mul(int x, int y);
}
public class C : A,B
{
int A.add(int x,int y)
{
return x + y;
}
int A.mul(int x,int y)
{
return 0;
}
int B.add(int x, int y)
{
return x;
}
int B.mul(int x, int y)
{
return y;
}
}
class D : C
{
}
Run Code Online (Sandbox Code Playgroud)
如何从D访问C中的方法?
如何从D访问C中的方法?
您必须使用具有相关接口的编译时的引用.例如:
class D
{
public void FooA()
{
A a = this;
Console.WriteLine(a.mul(...));
}
public void FooB()
{
B b = this;
Console.WriteLine(b.mul(...));
}
}
Run Code Online (Sandbox Code Playgroud)
当然你不需要局部变量 - 你可以施放:
Console.WriteLine(((A) this).mul(...));
Run Code Online (Sandbox Code Playgroud)
......但它有点难看.
这只是因为您使用的是显式接口实现.如果您隐式实现了其中一个接口,则可以直接调用方法...但显式接口实现只允许通过该接口调用成员.