欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點晴永久免費OA]C#接口的實現(xiàn)

admin
2023年4月13日 8:34 本文熱度 951

接口的定義方式與類相似,使用的代碼如下:

interface IMyInterface

{

//Interface member.

}

接口成員的定義與類成員的定義相似,但具有幾個重要的區(qū)別:

【1】、不允許使用訪問修飾符(public、private、protected或internal),所有接口成員都是隱式公共的。

【2】、接口成員不能包含代碼體。

【3】、接口不能定義字段成員。

【4】、不能用關(guān)鍵字static、virtual、abstract或sealed來定義接口成員。

【5】、類型定義成員是禁止的。

但要隱藏從基接口中繼承的成員,可以用關(guān)鍵字new來定義它們,例如:

interface IMyBaseInterface

{

        void DoSomething();

}

interface IMyDerivedInterface:IMyBaseInterface

{

        new void DoSomething();

}

其方式與隱藏繼承的類成員的方式一樣。

在接口中定義的屬性可以定義訪問塊get和set中的哪一個能用于該屬性(或?qū)⑺鼈兺瑫r用于該屬性),例如:

interface IMyInterface

{

        int MyInt{get;set;}

}

其中int屬性MyInt有g(shù)et和set存取器。對于訪問級別有更嚴格限制的屬性來說,可以省略它們中的任一個。

注意:這個語法類似于自動屬性,但自動屬性是為類(而不是接口)定義的,自動屬性必須包含get和set存取器。

接口沒有指定應(yīng)如何存儲屬性數(shù)據(jù)。接口不能指定字段,例如用于存儲屬性數(shù)據(jù)的字段。最后,接口與類一樣,可以定義為類的成員(但不能定義為其他接口的成員,因為接口不能包含類型定義)。

在類中實現(xiàn)接口

實現(xiàn)接口的類必須包含該接口所有成員的實現(xiàn)代碼,且必須匹配指定的簽名(包括匹配指定的get和set塊),并且必須是公共的。例如:

public interface IMyInterface

{

        void  DoSomething();

         void  DoSomethingElse();

}

public interface MyClass:IMyInterface

{

        public void  DoSomething(){};

        public void  DoSomethingElse(){};

}

可使用關(guān)鍵字virtual或abstract來實現(xiàn)接口成員,但不能使用static或const。還可以在基類上實現(xiàn)接口成員,例如:

public interface IMyInterface

{

        void  DoSomething();

        void  DoSomethingElse();

}

public class MyBaseClass

{

        public void  DoSomething(){}

}

public class MyDerivedClass:MyBaseClass,IMyInterface

{

        public void DoSomethingElse(){};

}

繼承一個實現(xiàn)給定接口的基類,就意味著派生類隱式地支持這個接口,例如:

public interface IMyInterface

{

        void  DoSomething();

        void  DoSomethingElse();

}

public class MyBaseClass:IMyInterface

{

        public virtual void  DoSomething(){};

        public virtual void  DoSomethingElse(){};

}

public class MyDerivedClass:MyBaseClass

{

        public override void  DoSomething(){};

}

顯然,在基類中把實現(xiàn)代碼定義為虛擬,派生類就可以替換該實現(xiàn)代碼,而不是隱藏它們。如果要使用new關(guān)鍵字隱藏一個基類成員,而不是重寫它,則方法IMyInterface.DoSomething()就總是引用基類版本,即使通過這個接口來訪問派生類,也是這樣。

 1、顯式實現(xiàn)接口成員

也可以由類顯式地實現(xiàn)接口成員。如果這么做,就只能通過接口來訪問該成員,不能通過類來訪問。隱式成員可以通過類和接口來訪問。

例如,如果類MyClass隱式地實現(xiàn)接口IMyInterface的方法DoSomething(),如上所述,則下面的代碼就是有效的:

MyClass myObj=new MyClass();

myObj.DoSomething();

下面的代碼也是有效的:

MyClass myObj=new MyClass();

IMyInterface myInt=myObj;

myInt.DoSomething();

另外,如果MyDerivedClass顯示地實現(xiàn)DoSomething(),就只能使用后一種技術(shù)。其代碼如下:

public class MyClass:IMyInterface

{

        void IMyInterface.DoSomething(){}

        public void  DoSomethingElse(){}

}

其中DoSomething()是顯示實現(xiàn)的,而DoSomethingElse()是隱式實現(xiàn)的。只有后者可以直接通過MyClass的對象實例來訪問。

 2、其他屬性存取器

如果實現(xiàn)帶屬性的接口,就必須實現(xiàn)匹配的get/set存取器。這并不是絕對正確的——如果在定義屬性的接口中只包含set塊,就可給類中的屬性添加get塊,反之亦然。但只有隱式實現(xiàn)接口時才能這么做。另外,大多數(shù)時候都想讓所添加的存取器的可訪問修飾符比接口中定義的存取器的可訪問修飾符更嚴格。因為按照定義,接口定義的存取器是公共的,也就是說,只能添加非公共的存取器。例如:

public interface IMyInterface

{

        int MyIntProperty{get;}

}

public class MyBaseClass:IMyInterface

{

        public int MyIntProperty{get;protected set;}

}

如果將新添加的存取器定義為公共的,那么能夠訪問實現(xiàn)該接口的類的代碼也可以訪問該存取器。但是,只能訪問接口的代碼就不能訪問該存取器。



該文章在 2023/4/13 8:34:02 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved