[英]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.