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

來源:互聯網
上載者:User

第七節、覆蓋虛介面

  有時候我們需要表達一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為一個實體在我們眼前出現,為此物件導向的程式設計語言便有了抽象類別的概念。C#作為一個物件導向的語言,必然也會引入抽象類別這一概念。介面和抽象類別使您可以建立組件互動的定義。通過介面,可以指定組件必須實現的方法,但不實際指定如何?方法。抽象類別使您可以建立行為的定義,同時提供用於繼承類的一些公用實現。對於在組件中實現多態行為,介面和抽象類別都是很有用的工具。

   一個抽象類別必須為類的基本類列表中列出的介面的所有成員提供實現程式。但是,一個抽象類別被允許把介面方法映射到抽象方法中。例如

interface IMethods {
  void F();
  void G();
}
abstract class C: IMethods
{
  public abstract void F();
  public abstract void G();
}

  這裡, IMethods 的實現函數把F和G映射到抽象方法中,它們必須在從C派生的非抽象類別中被覆蓋。
注意顯式介面成員實現函數不能是抽象的,但是顯式介面成員實現函數當然可以調用抽象方法。例如

interface IMethods
{
  void F();
  void G();
}
abstract class C: IMethods
{
  void IMethods.F() { FF(); }
  void IMethods.G() { GG(); }
  protected abstract void FF();
  protected abstract void GG();
}

  這裡,從C派生的非抽象類別要覆蓋FF 和 GG, 因此提供了IMethods的實際實現程式。

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.