[英]How to have public methods implemented from interface?
我有以下界面
interface ITest
{
void TestVoid();
}
class A : ITest
{
public void ITest.TestVoid() //will not work
{
Conole.WriteLine("Done");
}
public void TestVoid() //without name of interface, it works
{
Conole.WriteLine("Done");
}
}
第二个问题:接口是否仅包含成员签名但从未实现,这是否正确?
第一种方法是显式实现。 这允许您实现接口,而不在您的类之外显示此方法。 此外,您无法在显式实现上使用可见性修饰符。
第二种方法是正常(隐式)实现,其中实现接口AND创建公共方法。
更多: 隐式和显式接口实现 , C#:接口 - 隐式和显式实现
对于你的第二个问题:这是什么界面。 它只告诉您,对象上有哪些方法,属性或事件可用。 不是他们如何实施。
第一个叫做Explicit实现,不应该有任何访问说明符,Explicit接口也可以用来隐藏类开发人员认为私有的接口的细节。 第二个是隐式实现。 它必须具有public作为访问说明符。
这个链接非常有助于理解它。 http://blogs.msdn.com/b/mhop/archive/2006/12/12/implicit-and-explicit-interface-implementations.aspx
我回答你的第二个问题:是的,这是正确的。
如果您实现该接口,接口将声明您必须使用的一种合同 。
如果实现这些接口,接口只需(并且仅)声明您必须在类中编写的内容。
你需要实现这样的界面。
class A : ITest {
}.
您可以使用ITest明确实现ITests方法。 字首
或者隐含地作为公共方法
如果它们是明确的,那么访问它们的方式就是这样。
ITest a = new A();
除此以外。
A =新A();
接口永远不会有实现,
类方法总是会做,除非它被标记为抽象 - 然后派生类具有实现
第一个叫做显式实现,它会像这样工作:
interface ITest
{
void TestVoid();
}
class A : ITest
{
public static void Main()
{
A a1 = new A();
ITest a2 = new A();
a1.TestVoid(); // won't work
a2.TestVoid(); // will work
}
public void ITest.TestVoid()
{
Conole.WriteLine("Done");
}
}
接口不能包含实现,只能包含签名。
第二个是好的,所以你可以使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.