基於C#的介面基礎教程之五

來源:互聯網
上載者:User

  第五節、實現介面

  1、顯式實現介面成員

  為了實現介面,類可以定義顯式介面成員執行體(Explicit interface member implementations)。顯式介面成員執行體可以是一個方法、一個屬性、一個事件或者是一個索引指標的定義,定義與該成員對應的全權名應保持一致。

using System ;
interface ICloneable {
 object Clone( ) ;
}
interface IComparable {
 int CompareTo(object other) ;
}
class ListEntry: ICloneable, IComparable {
 object ICloneable.Clone( ) {…}
 int IComparable.CompareTo(object other) {…}
}

  上面的代碼中ICloneable.Clone 和IComparable.CompareTo 就是顯式介面成員執行體。

  說明:

  1、不能在方法調用、屬性訪問以及索引指標訪問中通過全權名訪問顯式介面成員執行體。事實上,顯式介面成員執行體只能通過介面的執行個體,僅僅引用介面的成員名稱來訪問。

  2、顯式介面成員執行體不能使用任何訪問限制符,也不能加上abstract, virtual, override或static 修飾符。

  3、顯式介面成員執行體和其他成員有著不同的訪問方式。因為不能在方法調用、屬性訪問以及索引指標訪問中通過全權名訪問,顯式介面成員執行體在某種意義上是私人的。但它們又可以通過介面的執行個體訪問,也具有一定的公有性質。

  4、只有類在定義時,把介面名寫在了基類列表中,而且類中定義的全權名、類型和傳回型別都與顯式介面成員執行體完全一致時,顯式介面成員執行體才是有效,例如:

class Shape: ICloneable {
object ICloneable.Clone( ) {…}
int IComparable.CompareTo(object other) {…}
}
  使用顯式介面成員執行體通常有兩個目的:

  1、因為顯式介面成員執行體不能通過類的執行個體進行訪問,這就可以從公有介面中把介面的實現部分單獨分離開。如果一個類只在內部使用該介面,而類的使用者不會直接使用到該介面,這種顯式介面成員執行體就可以起到作用。

  2、顯式介面成員執行體避免了介面成員之間因為同名而發生混淆。如果一個類希望對名稱和傳回型別相同的介面成員採用不同的實現方式,這就必須要使用到顯式介面成員執行體。如果沒有顯式介面成員執行體,那麼對於名稱和傳回型別不同的介面成員,類也無法進行實現。

  下面的定義是無效的,因為Shape 定義時基類列表中沒有出現介面IComparable。

class Shape: ICloneable
{
object ICloneable.Clone( ) {…}
}
class Ellipse: Shape
{
object ICloneable.Clone( ) {…}
}

共7頁: 上一頁 1 [2][3][4][5][6][7]下一頁



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。