C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記
繼承反應(yīng)了類和類之間的關(guān)系。
世界上很多事物都是有共性的,共性的那一部分我們就抽象為基類,用于派生其它類,這樣提高了代碼的復(fù)用性,使得代碼的結(jié)構(gòu)清晰易讀,而且易于代碼的擴(kuò)展和維護(hù)。
C#的繼承只能繼承自一個基類,這一點不同于C++的繼承。
C#的繼承具有傳遞性,即B繼承自A,C繼承自B,則C具有A的所有特性。
C#的繼承隱式為public的。
假如不在派生類構(gòu)造器中顯示調(diào)用一個基類構(gòu)造器,編譯器會自動插入對基類的默認(rèn)構(gòu)造器的一個調(diào)用,然后才會執(zhí)行派生類構(gòu)造器中的代碼, 如果基類沒有默認(rèn)的構(gòu)造器,會造成編譯錯誤。
舉例:動物的共性:有嘴巴,有眼睛,有鼻子,可以移動,能夠吃東西
所以定義基類 (包含動物的共性)
public class Animal {
......
}
再定義具體的動物的時候就可以繼承自基類Animal,不用再重新定義這些基本的特征,只定義自己獨有的特性就好。
例如:Dog
public class Dog:Animal
{
//編譯器會自動插入對基類的默認(rèn)構(gòu)造器的一個調(diào)用,然后才會執(zhí)行派生類構(gòu)造器中的代碼
public string Bark;//狗叫聲
}
public class Dog : Animal {
//在派生類構(gòu)造器中顯示調(diào)用一個基類構(gòu)造器
public Dog()
: base() {
}
public string Bark;
}
注意:
可以把一個派生類的值賦給基類,但不能把一個基類的值賦給派生類,因為基類不能轉(zhuǎn)換為派生類,基類中只包含了派生類的一部分特性。
Animal animal=new Dog(); 正確的
Dog dog=new Animal();錯誤
相關(guān)文章
C#自定義鼠標(biāo)拖拽Drag&Drop效果之基本原理及基本實現(xiàn)代碼
拖拽效果無論是在系統(tǒng)上、應(yīng)用上、還是在網(wǎng)頁上,拖拽隨處可見,下面通過本文介紹下C#自定義鼠標(biāo)拖拽Drag&Drop效果之基本原理及基本實現(xiàn)代碼,需要的朋友可以參考下2022-04-04
基于C#動手實現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server
這篇文章主要為大家詳細(xì)介紹了基于C#動手實現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10

