《你必須知道的.NET》--面向對象編程:接口和抽象類(Ⅱ)

本節主要介紹:編程

  面向對象思想-多態;設計模式

  接口;ide

  抽象類。spa

Ⅰ、接口:設計

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

  ex:  orm

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

  一個類能夠實現多個接口,當一個類實現接口時,它不只要實現該接口中定義的全部方法,還要實現該接口從其餘接口中繼承的全部方法!對象

Ⅱ、抽象類:  blog

  抽象類提供多個派生類共享基類的公共定義,它既能夠提供抽象方法,又能夠提供非抽象方法。抽象類不能實例化,必須經過繼承由其派生類實現其抽象方法,所以對抽象類不能使用new關鍵字,也不能被密封。若是派生類沒有實現全部的抽象方法,則該派生類也必須聲明爲抽象類。另外,實現抽象方法由override方法來完成。繼承

Ⅲ、規則和場合:  

a.「接口不變」,在由接口增長擴展時,應該增長新的接口,而不能更改現有接口;
b.儘可能將接口設計成功能單一的功能塊;
c.在接口中,全部的方法都默認爲public;
d.在抽象方法聲明中不能使用static或virtual關鍵字。

Ⅳ:異同點:

1.相同點

a.都不能被直接實例化,均可以經過繼承實現其抽象方法;
b.都是面向對象編程的技術基礎,實現了諸多的設計模式。

2.不一樣點

a.接口支持多繼承;抽象類不能實現多繼承;  (嚴格說來,接口繼承類應該稱爲類實現接口)b.接口只能定義抽象規則;抽象類既能夠定義規則,還能夠提供已實現的成員;c.接口是一組行爲規範;抽象類是一個不徹底的類,着重族的概念;d.接口能夠用於支持回調;抽象類在實現回調時有侷限性;e.抽象類能夠定義有實現的方法;f.接口能夠做用於值類型和引用類型;抽象類只能做用於引用類型。  例如:Struct就能夠繼承接口,而不能繼承抽象類。
相關文章
相關標籤/搜索