Interface接口學(xué)習(xí)總結(jié)淺析
Interface接口的主要功能是什么呢?我們經(jīng)常在編程時使用的Interface接口那么作用是什么?Interface接口可定義的類是什么?下面我們一一介紹。
1. 接口描述的是可屬于任何類或結(jié)構(gòu)的一組相關(guān)功能:
◆接口可由方法、屬性、事件、索引器或這四種成員類型的任意組合構(gòu)成。
◆接口不能包含字段。
◆接口成員一定是公共的。
◆若要實現(xiàn)接口成員,類中的對應(yīng)成員必須是公共的、非靜態(tài)的,并且與接口成員具有相同的名稱和簽名。類的屬性和索引器可以為接口上定義的屬性或索引器定義額外的訪問器。例如,接口可以聲明一個帶有 get 訪問器的屬性,而實現(xiàn)該接口的類可以聲明同時帶有 get 和 set 訪問器的同一屬性。但是,如果屬性或索引器使用顯式實現(xiàn),則訪問器必須匹配。
2. 接口可定義的類容:
隱式接口:如果類或者結(jié)構(gòu)要實現(xiàn)的是單個接口,可以使用隱式實現(xiàn)。
顯式接口:如果類或者結(jié)構(gòu)繼承了多個接口那么接口中相同名稱成員就要顯式實現(xiàn)。顯式實現(xiàn)是通過使用接口的完全限定名來實現(xiàn)接口成員的。
使用顯式接口目的:
1、因為顯式接口成員執(zhí)行體不能通過類的實例進(jìn)行訪問,這就可以從公有接口中把接口的實現(xiàn)部分單獨分離開。如果一個類只在內(nèi)部使用該接口,而類的使用者不會直接使用到該接口,這種顯式接口成員執(zhí)行體就可以起到作用。
2、顯式接口成員執(zhí)行體避免了接口成員之間因為同名而發(fā)生混淆。如果一個類希望對名稱和返回類型相同的接口成員采用不同的實現(xiàn)方式,這就必須要使用到顯式接口成員執(zhí)行體。如果沒有顯式接口成員執(zhí)行體,那么對于名稱和返回類型不同的接口成員,類也無法進(jìn)行實現(xiàn)。
隱式接口:
如果類實現(xiàn)兩個接口,并且這兩個接口包含具有相同簽名的成員,那么在類中實現(xiàn)該成員將導(dǎo)致兩個接口都使用該成員作為它們的實現(xiàn)。例如:
C#
- interface IControl
- {
- void Paint();
- }
- interface ISurface
- {
- void Paint();
- }
- class SampleClass : IControl, ISurface
- {
- // Both ISurface.Paint and IControl.Paint call this method.
- public void Paint()
- {
- }
- }
調(diào)用:可以直接調(diào)用
顯式接口:
如果兩個接口成員執(zhí)行不同的函數(shù),那么這可能會導(dǎo)致其中一個接口的實現(xiàn)不正確或兩個接口的實現(xiàn)都不正確??梢燥@式地實現(xiàn)接口成員 -- 即創(chuàng)建一個僅通過該接口調(diào)用并且特定于該接口的類成員。這是使用接口名稱和一個句點命名該類成員來實現(xiàn)的。例如:
C#
- public class SampleClass : IControl, ISurface
- {
- void IControl.Paint()
- {
- System.Console.WriteLine("IControl.Paint");
- }
- void ISurface.Paint()
- {
- System.Console.WriteLine("ISurface.Paint");
- }
- }
調(diào)用:只能通過接口來調(diào)用。
Interface接口的基本內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)Interface接口有所幫助。
【編輯推薦】