目錄
一.繼承的基本概念、定義派生類
二.繼承和訪問的區別
三.訪問限定符
四.保護繼承和私有繼承的區別
物件導向的四個基本特徵:抽象,封裝,繼承和多型,其中最主要的特徵是繼承和多型。
繼承:可對類(class)分層,提供型別/子型別的一種機制。通過類派生(class derivation)的機制來支援繼承。被繼承的類稱為基類(base class)或超類(superclass)或父類,新產生的類為派生類(derived class)或子類(subclass)。基類和派生類的集合稱作類繼承層次結構(hierarchy)。
目的:實現**復用,以及為多型的實現提供了基礎。
語法:
class 派生類名:訪問限定符 基類名1,訪問限定符 基類名2,……
例如,這就是最簡單的單繼承:
#includeusing namespace std;
class base
;//單繼承 base 稱之為基類(父類、超類),deriv稱之為派生類(子類) ,
//public 稱之為子類對父類的公有繼承(訪問限定符)
class deriv :public base
;int main()
編制派生類步驟:吸收基類的成員 :不論是資料成員,還是函式成員,除建構函式與析構函式外全盤接收改造基類成員 :宣告乙個和某基類成員同名的新成員,派生類中的新成員就遮蔽了基類同名成員稱為同名覆蓋(override)(同名隱藏發展新成員 :派生類新成員必須與基類成員不同名,它的加入保證派生類在功能上有所發展。重寫建構函式與析構函式,派生類不繼承這兩種函式。作為子類會繼承父類的所有(公有、私有和保護)資訊嗎?子類內部能訪問父類的資訊嗎?物件能訪問父類的資訊嗎?繼承不等價於訪問(使用)。例如 遺傳學上的隱式現象,雖然繼承了相關基因但是成長中沒有顯現出來。子類可以繼承父類的所有資訊(從記憶體的角度看,繼承相當於把父類的除了構造和析構函式外的所有資訊拷貝到子類中)。
但是,繼承和訪問不能混為一談,訪問可以從來兩個角度看:在子類內部對父類資訊的訪問,物件對父類資訊的訪問。
#includeusing namespace std;
class base;
class deriv :private base //public換為private 程式結果也相同。
子類對父類的訪問限定(也稱繼承方式):public、private 和protected,如果不寫的話,預設是私有訪問限定。
之前的學習,我們知道:物件只能訪問類的公有成員(函式和資料),而不能直接訪問私有或保護成員。
有了繼承的概念後,我們就需要討論:子類內部能訪問父類的哪些資訊,子類的物件能訪問父類的哪些資訊,
而這些與子類對父類的訪問限定(public、private 和protected)有關係。
不論子類對父類使用什麼訪問限定(public、private 和protected)的繼承:
a:子類不能訪問父類的建構函式和析構函式(模擬:小狗不能繼承狗爸爸出生和死亡)
b:在子類中無法直接訪問父類中的私有資訊(函式和資料),父類的私有資訊被隱藏了。
c:子類的物件無法訪問子類和父類中的私有或保護資訊。
公有繼承的情況下:相當於把父類中除了構造和析構函式外的其他資訊都拷貝到子類中,這些資訊在子類中的訪問限定符為各自原來的限定符。
在子類中可以直接訪問父類中的公有和保護方法(這其實就是保護和私有的區別。)
子類的物件只可以訪問父類的公有成員,但不能訪問保護和私有成員。
保護繼承情況下:保護繼承相當於:把父類的資訊拷貝過來,其限定符為protected,但是經過限定符的疊加之後,
原來限定符public變為protected,protected和private保持不變 。
a: 在子類中可以訪問父類的公有和保護成員
b: 子類中和物件中都不可訪問父類的私有成員
c: 子類的物件只能訪問自身的公有成員,不能訪問父類的公有成員,因為此時的父類的公有成員在子類中已經變為保護成員了。
私有繼承情況:私有繼承相當於:把父類的資訊拷貝過來,其限定符為private,但是經過限定符的疊加之後,
原來限定符public和protected變為private,原來的private保持不變 。
a: 在子類中可以訪問父類的公有和保護成員,儘管可看做其已經成為子類的私有成員了
b: 子類中和物件中都不可訪問父類的私有成員
c: 子類的物件只能訪問自身的公有成員,不能訪問父類的公有成員、保護和私有成員。
私有繼承從感覺上看阻止了父類再向下繼承(表現在孫子類不能訪問爺爺類的公有成員了。但實質上繼承是可以的)
但是,保護繼承的孫子類可以訪問爺爺類的公有成員。
poll方法的基本概念
在上篇部落格中,我們詳細了解了關於select介面的用法,在學習poll函式之前,我們先對select函式的內容做乙個簡單的回顧 select優點 目前幾乎在所有的平台上支援,其良好跨平台支援也是它的乙個優點 select缺點 1 每次呼叫 select 都需要把 fd 集合從使用者態拷貝到核心態,...
C (繼承的基本概念和語法)
好久沒有更新c 的部落格了,一直也沒有系統的學過c 偶爾會用到c 的概念,像模板函式和過載用的比較多,c 中的繼承基本上沒有怎麼用過。1,1.繼承與派生的概念 a.繼承與派生是同一過程從不同的角度看 保持已有類的特性而構造新類的過程成為繼承 在已有類的基礎上新增自己的特性而產生新類的過程稱為派生。b...
爬蟲的基本概念(一)
1,http和https http 超文字傳輸協議,預設埠號 80 https http ssl 安全套接字層 預設埠號 443 2,http常見請求頭 1.host 主機和埠 2.connect 連線型別 3.upgrade insecure requests 公升級為https請求 4.user...