我有一个问题,我们如何实现具有相同方法名的接口
interface ISample2
{
string CurrentTime();
string CurrentTime(string name);
}
interface ISample1
{
string CurrentTime();
}
Run Code Online (Sandbox Code Playgroud)
我确实喜欢这个.这是对的吗?
class TwoInterfacesHavingSameMethodName:ISample1,ISample2
{
static void Main(string[] sai)
{
ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
Console.Write(obj1.CurrentTime());
ISample2 obj2 = new TwoInterfacesHavingSameMethodName();
Console.Write(obj2.CurrentTime("SAI"));
Console.ReadKey();
}
#region ISample1 Members
string ISample1.CurrentTime()
{
return "Interface1:" + DateTime.Now.ToString();
}
#endregion
#region ISample2 Members
string ISample2.CurrentTime()
{
return "Interface2:FirstMethod" + DateTime.Now.ToString();
}
string ISample2.CurrentTime(string name)
{
return "Interface2:SecondMethod" + DateTime.Now.ToString() + "" + name;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
这一行的含义是什么:
ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
Run Code Online (Sandbox Code Playgroud)
我们是为Class还是Interface创建对象.在Interface中编写方法的基本用法是什么.
显式实现接口时,只有从对该接口的引用中调用它时,才会调用显式实现.
所以如果你会写:
TwoInterfacesHavingSameMethodName obj1 = new TwoInterfacesHavingSameMethodName();
obj1.CurrentTime();
Run Code Online (Sandbox Code Playgroud)
你会收到一个错误.
但
ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
ISample2 obj2 = new TwoInterfacesHavingSameMethodName();
obj1.CurrentTime();
obj2.CurrentTime();
Run Code Online (Sandbox Code Playgroud)
将工作.
如果你也想调用这个函数, TwoInterfacesHavingSameMethodName你也必须隐式地实现这个接口.对于前:
public string CurrentTime()
{
return "Implicit";
}
Run Code Online (Sandbox Code Playgroud)