【发布时间】:2010-03-26 01:54:49
【问题描述】:
故事是这样的。我创建了一个界面,IVehicle。我在课堂上明确实现了接口Vehicle.cs。
这是我的界面:
Interface IVehicle
{
int getWheel();
}
这是我的课:
class Vehicle: IVehicle
{
public int IVehicle.getWheel()
{
return wheel;
}
public void printWheel()
{
Console.WriteLine(getWheel());
}
}
请注意,getWheel() 已明确实现。现在,当我尝试在 Vehicle 类中调用该方法时,我收到一条错误消息,指出当前上下文中不存在 getWheel()。有人可以帮我理解我做错了什么吗?
【问题讨论】:
-
作为一个java人,我想知道为什么会存在这个令人费解的事情?为什么会有人希望上述存在,它有什么好处?
-
在显式实现的成员上指定可见性修饰符是语法错误。一旦您的对象被转换为您的接口类型,该成员始终可以访问。
-
@mP 如果您使用一个公共成员实现多个接口,这允许您为每个接口提供不同的定义。它还增加了清理智能感知,因为除非您强制转换为正确的接口,否则显式成员不可见或不可用。
-
对我来说,它还增加了代码的可读性。想象一个大班,在某个地方你有一个
putlic int Clean(int n) {...}。这是一个接口方法还是不是?你可以重命名它,删除n,还是不能?使用显式实现,您无需进行调查 - 您会立即看到这一点。