C#接口特性和多接口實現

C#接口特性和多接口實現

接口
關鍵字: interface
使用目的:抽象類所擁有的共性,也可以概括爲:爲了多態。
特點:
1.接口中只能包含方法。(方法、屬性、索引器、事件)
2.接口中的方法不能有任何實現
3.接口中的成員不能有任何訪問修飾符(哪怕是public)
4.接口不能被實例化
5.實現接口的類,必須實現接口的所有成員(這裏跟抽象類一樣)
6.類不能多繼承,所以在某些情況下,只能用接口來代替。
接口可以多實現(一個類可以繼承多個接口,而只能繼承一個類)
7.接口的主要目的就是爲了實現多態
8.當一個類,同時繼承了某個類,並且也實現了某些接口的時候,
必須要將繼承的類寫在第一個(如果一個類同時繼承了父類和接口的時候,要把父類寫在最前面)
9.當多個類,都具有某個或某幾個功能時(方法),但是這幾個類型又不屬於相同的系列
(這幾個類型沒有共同的父類,就不能用抽象類。),所以這時,爲了實現多態就可以
考慮把這幾個類型共有的方法提取到一個接口中,讓這幾個類型
分別實現該接口
10.當父類實現接口,子類繼承父類。那麼 接口就可以引用子類
11.不要在一個接口中寫過多的方法,避免造成接口污染。可編寫多個接口,在每個接口中,
分別定義方法
12.實現接口方法的時候,不要有override關鍵字,直接跟平常定義一樣
13.接口方法的顯示實現,如果多個接口裏有相同的方法名。那麼第一個方法
名默認的引用的是排在最前面的接口,如果要使用後面接口的方法,
就要顯示實現:接口名.方法名。訪問修飾符是private
這裏說明有一點就是第13條的說明:
eg:接口實現例子
//定義兩個接口:
public interfaceEsSdkInterface
{
string init(string strIp, int nPort);

string pdfSign(string strName, string strFilePath, bool bIsDefault);

string CreateAccount(string strAccocunt, string strPwd);
}

public interface EsSdkOuterInterface
{
//給接口中方法pdfSign和EsSdkInterface接口中具有相同的方法名和參數
string pdfSign(string strName, string strFilePath, bool bIsDefault);

string CreateOuterAccount(string strAccocunt, string strPwd);
}

//創建工廠類:
public class EsSdkFactory
{
//在同一個工廠類中實例接口
private static EsSdkInterface INSTANCE = new EsSdkInterfaceImpl();

private static EsSdkOuterInterface INSTACNE_OUTER =newEsSdkOuterInterfaceImpl)();

public static EsSdkInterface GetInstance()
{
return INSTANCE;
}

public static EsSdkOuterInterface GetInstanceOuter()
{
return INSTACNE_OUTER;
}
}

//接口實現類
public class EsSdkInterfaceImpl : EsSdkInterface, EsSdkOuterInterface
{
public string init(string strIp,int nPort);

public string pdfSign(string strName,string strFilePath,bool bIsDefault);

public string CreateAccount(string strAccocunt,string strPwd);
}

這時候EsSdkOuterInterfaceImpl類會報錯說不能實現接口EsSdkOuterInterface的方法因爲是不可見的
那麼爲什麼呢
主要原因就是上面的說的第13條的接口特性所決定的此時接口EsSdkOuterInterface中的方法都是private權限的
所以對外是不可見的。如果要實現就要顯示的加上接口名.方法名。
發佈了79 篇原創文章 · 獲贊 91 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章