一、介面的基本概念
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
介面的定義方式與模擬較相似。
inte***ce imyinte***ce
介面成員的定義與類成員的定義之間的區別: 1
.不允許使用訪問修飾符(
public
,private
,protected
或internal
),所有的介面成員都是公共的。 2
.介面成員不能包含**體。 3
.介面不能定義域成員(屬性)。 4
.介面成員不能使用關鍵字
static
,virtual
,abstract
或sealed
來定義。 5
.型別定義成員是禁止的。
如果需要隱藏繼承了基介面的成員,可以使用
new關鍵字來定義它們,例如:
inte***ce imyinte***ce
inte***ce imyderivedinte***ce : imyinte***ce
其執行方式與隱藏繼承的類成員一樣。
在介面中定義的屬性可以確定訪問塊
get和/或
set中的哪乙個能用於該屬性。
inte***ce imyinte***ce
} 注意:介面沒有指定屬性應如何儲存。介面不能指定域,例如用於儲存屬性資料的域。
介面與類一樣,可以定義為類的成員(但與介面的其他成員不同,因為介面不能包含型別定義)。
二、在類中執行介面
執行介面的類必須包含該介面所有成員的執行**,且必須匹配指定的簽名(包括匹配指定的
get和
set塊),並且必須是公共的。
可以使用關鍵字
virtual
或abstract
來執行介面成員,但不能使用
static
或const
。例如:
public
inte***ce imyinte***ce
public
class myclass : imyinte***ce
public
void dosomethingelse()
} 介面成員還可以在基類上執行:
public
inte***ce imyinte***ce
public
class mybaseclass
} public
class myderivedclass : mybaseclass,imyinte***ce
} 即通過另一類中定義相同簽名並且符合實現介面的方法。
繼承乙個執行給定介面的基類,就意味著派生類隱式地支援這個介面,例如:
public
inte***ce imyinte***ce
public
class mybaseclass : imyinte***ce
public
virtual
void dosomethingelse()
} public
class myderivedclass : mybaseclass
} 在基類中把執行**定義為虛擬,派生類就可以替換該執行**,而不是隱藏它們。如果要使用
new關鍵字隱藏乙個基類成員,而不是重寫它,則方法
imyinte***ce.dosomething()
就總是引用基類版本,即使派生類通過這個介面來訪問,也是這樣。
我們用下面這段**測試上邊的介面定義:
mybaseclass a =
new mybaseclass();
a.dosomething();
a.dosomethingelse();
imyinte***ce imi = a;
imi.dosomething();
imi.dosomethingelse();
console.writeline("\n");
myderivedclass b =
new myderivedclass();
b.dosomething();
b.dosomethingelse();
imi = b;
imi.dosomething();
imi.dosomethingelse();
執行結果為:
三、顯示執行介面成員
介面成員也可以由類顯示的執行。如果這麼做,該成員就只能通過介面來訪問,不能通過類來訪問。
public
inte***ce imyinte***ce
public
class mybaseclass : imyinte***ce
public
void dosomethingelse()
} 這樣定義好後我們用如下**進行執行:
mybaseclass a =
new mybaseclass();
a.dosomethingelse();
imyinte***ce imi = a;
imi.dosomething();
imi.dosomethingelse();
大家可以看下面的截圖,對於
dosomething()
我們只能通過介面才能訪問。
類物件訪問不到:
介面物件可以訪問到:
C 學習筆記(七) 介面的執行
一 介面的基本概念 介面的定義方式與模擬較相似。inte ce imyinte ce 介面成員的定義與類成員的定義之間的區別 1 不允許使用訪問修飾符 public private protected 或internal 所有的介面成員都是公共的。2 介面成員不能包含 體。3 介面不能定義域成員 屬...
Go語言學習筆記(七)介面
go語言中的介面作用類似於c 中的虛函式機制,可以提供乙個統一呼叫的方式。介面是雙方約定的一種合作協議。介面實現者不需要關心介面會被怎樣使用,呼叫者也不需要關心介面的實現細節。介面是一種型別,也是一種抽象結構,不會暴露所包含資料的格式 型別及結構。每個介面型別由多個方法組成。type 介面型別名 i...
C 學習筆記之四 介面
關鍵字 inte ce 介面是乙個契約。規定了一組功能。1 介面不能包含實現,只能包含各種簽名 2 介面成員預設public並且無需再顯式新增public 3 實現介面的類必須實現介面的全部成員。4 針對同一介面的不同實現類可以採用不同方法實現介面的成員。可選 訪問修飾符 public 實現不侷限於...