作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个接口(interface) A,B 都有相同的方法声明。我有一个继承自接口(interface) 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
{
}
如何从D访问C中的方法?
最佳答案
How to access the methods in C from D?
您必须使用具有相关接口(interface)编译时的引用。例如:
class D
{
public void FooA()
{
A a = this;
Console.WriteLine(a.mul(...));
}
public void FooB()
{
B b = this;
Console.WriteLine(b.mul(...));
}
}
当然你不需要局部变量——你可以强制转换:
Console.WriteLine(((A) this).mul(...));
...但它变得有点丑陋。
这只是因为您正在使用 explicit interface implementation .如果您隐式实现了其中一个接口(interface),您可以像往常一样直接调用这些方法...但是显式接口(interface)实现只允许通过该接口(interface)调用成员。
关于c# - 如何从子类访问派生类中实现的接口(interface)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797035/
我是一名优秀的程序员,十分优秀!