顯式介面實現(c# 程式設計指南)
如果類實現兩個介面,並且這兩個介面包含具有相同簽名的成員,那麼在類中實現該成員將導致兩個介面都使用該成員作為它們的實現。例如:
c#
複製**
inte***ce icontrolinte***ce isu***ce
class sampleclass : icontrol, isu***ce
}
然而,如果兩個介面成員執行不同的函式,那麼這可能會導致其中乙個介面的實現不正確或兩個介面的實現都不正確。可以顯式地實現介面成員 -- 即建立乙個僅通過該介面呼叫並且特定於該介面的類成員。這是使用介面名稱和乙個句點命名該類成員來實現的。例如:
c#
複製**
publicclass sampleclass : icontrol, isu***ce
void isu***ce.paint()
}
類成員icontrol.paint只能通過icontrol介面使用,isu***ce.paint只能通過isu***ce使用。兩個方法實現都是分離的,都不可以直接在類中使用。例如:
c#
複製**
sampleclass obj = new sampleclass();//obj.paint(); // compiler error.
icontrol c = (icontrol)obj;
c.paint(); // calls icontrol.paint on sampleclass.
isu***ce s = (isu***ce)obj;
s.paint(); // calls isu***ce.paint on sampleclass.
顯式實現還用於解決兩個介面分別宣告具有相同名稱的不同成員(如屬性和方法)的情況:
c#
複製**
inte***ce ileft}inte***ce iright
為了同時實現兩個介面,類必須對屬性 p 和/或方法 p 使用顯式實現以避免編譯器錯誤。例如:
c#
複製**
class middle : ileft, irightint ileft.p }
}
請參見
參考物件、類和結構(c# 程式設計指南)
介面(c# 程式設計指南)
繼承(c# 程式設計指南)
概念c# 程式設計指南
C 介面與顯式介面實現
介面 介面包含類或結構可以實現一組相關功能的定義。inte ce iequatable繼承iequatable的類必須實現equals的方法,iequatable不提供equals的實現。介面可以包含方法 屬性 事件 索引器。介面不能包含常量 字段 運算子 例項建構函式 終結器或型別。介面成員會自動...
C 顯式介面實現和隱式介面實現
介面的實現分為 隱式實現和顯式實現。隱式介面實現 如果類或者結構要實現的是單個介面,可以使用隱式實現。顯式介面實現 如果類或者結構繼承了多個介面,那麼介面中相同名稱成員就要顯式實現。顯示實現是通過使用介面的完全限定名來實現介面成員的。使用顯式介面成員執行體通常有兩個目的 1 因為顯式介面成員執行體不...
介面與顯式實現介面
鴨子是一種鳥,會游泳,同時又是一種食物。c 中所有的類都只能有乙個父類,c 引入了介面 inte ce 這一概念,並規定 乙個類可以實現多個介面 關鍵字inte ce 用於定義介面。定義兩個介面 public inte ce iswim public inte ce ifood 介面可以看成是一種 ...