標籤:
本節主要介紹:
物件導向思想-多態;
介面;
抽象類別。
Ⅰ、介面:
介面是包涵一組虛方法的抽象類別型,其中每一種方法都有其名稱、參數和傳回值類型。介面中方法不能包涵任何實現。
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》--物件導向編程:介面和抽象類別(Ⅱ)