如何从接口实现公共方法

本文关键字:方法 实现 接口 | 更新日期: 2023-09-27 17:50:19

我有以下界面

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");
   }
}

第二个问题:接口只包含成员的签名而不包含实现,这对吗?

如何从接口实现公共方法

第一个方法是显式实现。这允许您实现接口,而无需在类外部显示此方法。此外,您不能在显式实现中使用可见性修饰符。

第二种方法是普通的(隐式)实现,其中实现接口并创建公共方法。

更多:隐式和显式接口实现,c#:接口-隐式和显式实现

回答你的第二个问题:这就是接口。它只告诉你,对象上有什么方法,属性或事件可用。

我回答你的第二个问题:是的,是正确的。
接口声明一种契约,如果你实现该接口,你必须使用
一个接口简单地(并且仅仅)声明了当你实现这些接口时你必须在你的类中写些什么。

第一个叫做显式实现,它的工作原理是这样的:

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");
   }
}

接口不能包含实现,只能包含签名。

第二个可以使用

您需要像这样实现接口。

class A : ITest {
}.   

你可以用ittest显式地实现ittests方法。前缀

或隐式地作为公共方法

如果它们是显式的,则访问它们的方式如下。

ITest a = new A();


A = new A();

接口永远没有实现,
类方法总是这样做,除非它被标记为抽象-那么派生类具有实现n

第一种称为显式实现,不应该有任何访问说明符,显式接口还可以用于隐藏类开发人员认为私有的接口的详细信息。第二个是隐式实现。它必须以public作为访问说明符。

这个链接对理解它很有帮助。http://blogs.msdn.com/b/mhop/archive/2006/12/12/implicit-and-explicit-interface-implementations.aspx