我有一个问题,我们如何实现具有相同方法名称的接口
interface ISample2
{
string CurrentTime();
string CurrentTime(string name);
}
interface ISample1
{
string CurrentTime();
}
我确实喜欢这个。这是对的吗?
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
}
这一行的含义是什么:
ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
我们是为Class还是Interface创建对象。在Interface中编写方法的基本用法是什么。
答案 0 :(得分:5)
当您显式实现接口时,只有在从对该接口的引用中调用它时,才会调用显式实现。
所以如果你要写:
TwoInterfacesHavingSameMethodName obj1 = new TwoInterfacesHavingSameMethodName();
obj1.CurrentTime();
你会收到一个错误。
但是
ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
ISample2 obj2 = new TwoInterfacesHavingSameMethodName();
obj1.CurrentTime();
obj2.CurrentTime();
会奏效。
如果你想在TwoInterfacesHavingSameMethodName
上调用这个函数,你也必须隐式地实现这个接口。例如:
public string CurrentTime()
{
return "Implicit";
}
答案 1 :(得分:0)
是的,你所做的是正确的。 要回答第二个问题,您始终要创建类的对象并键入接口。 在接口中使用写入方法是强制所有类来实现该方法。