標籤:
前兩天重新看了《C#進階編程》裡的第四章:繼承與第六章:數組。OOP三大特性:封裝,繼承,多態,個人感覺繼承是實現多態的基礎,包括以後接觸的設計模式,都是繼承特性的衍生。
繼承特性有兩種,實現繼承和介面繼承。
實現繼承
1 public class A 2 { 3 private string _str; 4 public string Str { get { return _str; } set { _str = value; } } 5 6 public void Amethod() 7 { 8 } 9 }10 11 public class B : A12 {13 private int _num;14 public int Num { get { return _num; } set { _num = value; } }15 16 public void Bmethod()17 { 18 }19 }
上面的例子中 B類繼承自A類,它可以有A的開放屬性和方法,這些都是基礎的,就不一一講解了,自己看書比較快,懶得說。說下平時用得比較少的,容易忘記的東西吧,一個是建構函式,繼承體系中的建構函式是從父級函數一級一級往下構造的。
例如上面的例子中:執行個體化一個B類,會先執行個體化一個父類,也就是A類,然後才會執行個體化B類。
重構方法:當B類需要建立一個在A類已經存在的方法,如果A類的方法有標記是可以重構的,則B類可以在新方法中添加關鍵字 override重構該方法,否則就需要在B類方法前添加 new 關鍵字隱藏A類方法。
介面繼承
所謂介面介面繼承,按照不規範說法其實就是實現介面。介面規範有個比較容易忽略的地方時,介面可以規範屬性(不是欄位),其他的好像都差不多。個人感覺,介面其實就像一份規章制度,你要加入某個圈子,就必須遵守某個圈子的規章制度。
舉例:想參加一場賽車比賽,肯定要報名參賽,具有一輛賽車,參加比賽。其中“報名參賽”,“有一輛賽車”,“參加比賽”,就抽象出來的介面裡面的方法和屬性。而要參加賽車的對象,就必須實現這個介面,也就是這幾個方法和屬性。賽車要實現這個介面,但又不會限定你如何去實現,報名可以報名,線下報名,電話報名......賽車可以是寶馬,平治,路虎,本田.....參加比賽,可以跑50碼,可以跑40碼,甚至可以停在賽道上
重學《C#進階編程》(繼承)