《你必須知道的.NET》--物件導向編程:介面和抽象類別(Ⅱ)

來源:互聯網
上載者:User

標籤:

本節主要介紹:

  物件導向思想-多態;

  介面;

  抽象類別。

Ⅰ、介面:

  介面是包涵一組虛方法的抽象類別型,其中每一種方法都有其名稱、參數和傳回值類型。介面中方法不能包涵任何實現。

  ex:  

        public interface IHelloWorld        {            bool CheckFileFormat(string fileName);        }

  一個類可以實現多個介面,當一個類實現介面時,它不僅要實現該介面中定義的所有方法,還要實現該介面從其他介面中繼承的所有方法!

Ⅱ、抽象類別:  

  抽象類別提供多個衍生類別共用基類的公用定義,它既可以提供抽象方法,又可以提供非抽象方法。抽象類別不能執行個體化,必須通過繼承由其衍生類別實現其抽象方法,因此對抽象類別不能使用new關鍵字,也不能被密封。如果衍生類別沒有實現所有的抽象方法,則該衍生類別也必須聲明為抽象類別。另外,實現抽象方法由override方法來完成。

Ⅲ、規則和場合:  

a.“介面不變”,在由介面增加擴充時,應該增加新的介面,而不能更改現有介面;
b.盡量將介面設計成功能單一的功能塊;
c.在介面中,所有的方法都預設為public;
d.在抽象方法聲明中不能使用static或virtual關鍵字。

Ⅳ:異同點:

1.相同點

a.都不能被直接執行個體化,都可以通過繼承實現其抽象方法;
b.都是物件導向編程的技術基礎,實現了諸多的設計模式。

2.不同點

a.介面支援多繼承;抽象類別不能實現多繼承;  (嚴格說來,介面繼承類應該稱為類實現介面)
b.介面只能定義抽象規則;抽象類別既可以定義規則,還可以提供已實現的成員;
c.介面是一組行為規範;抽象類別是一個不完全的類,著重族的概念;
d.介面可以用於支援回調;抽象類別在實現回調時有局限性;
e.抽象類別可以定義有實現的方法;
f.介面可以作用於實值型別和參考型別;抽象類別只能作用於參考型別。 例如:Struct就可以繼承介面,而不能繼承抽象類別。

 

  

 

《你必須知道的.NET》--物件導向編程:介面和抽象類別(Ⅱ)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.