C++中的继承(一)
C++中的繼承(一)
文章目錄
- C++中的繼承(一)
- 一.繼承的概念及定義
一.繼承的概念及定義
- 1.繼承的概念:
- 繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)中使代碼復(fù)用的重要手段,它允許程序在保持原有類的結(jié)構(gòu)的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能,這樣差生的類就叫派生類,也叫子類。
- 繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu),體現(xiàn)了由簡(jiǎn)單到復(fù)雜的認(rèn)知過(guò)程。以前我們接觸的復(fù)用都是函數(shù)復(fù)用,繼承是類設(shè)計(jì)層次的復(fù)用。
- 2.繼承的格式:
- 3.繼承權(quán)限和訪問(wèn)權(quán)限:
注意:二者是不一樣的,不要混淆
- 4.繼承父類成員在子類的訪問(wèn)權(quán)限的變換
| 基類的public成員 | 在派生類中也是public成員,可以訪問(wèn)可以修改 | 在派生類中是protected成員,只允許子類及本類的成員函數(shù)訪問(wèn) | 在派生類中是private成員,只允許本類的成員函數(shù)訪問(wèn) |
| 基類的protected成員 | 在派生類中是protected成員,只允許子類及本類的成員函數(shù)訪問(wèn) | 在派生類中是protected成員,只允許子類及本類的成員函數(shù)訪問(wèn) | 在派生類中是private成員,只允許本類的成員函數(shù)訪問(wèn) |
| 基類的private成員 | 在派生類中不可訪問(wèn) | 在派生類中不可訪問(wèn) | 在派生類中不可訪問(wèn) |
總結(jié):
基類private成員在派生類中無(wú)論以什么方式繼承都是不可見的。這里的不可見是指基類的私有成員還是被繼承到了派生類對(duì)象中,但是語(yǔ)法上限制派生類對(duì)象不管在類里面還是類外面都不能去訪問(wèn)它。
基類private成員在派生類中是不能被訪問(wèn),如果基類成員不想在類外直接被訪問(wèn),但需要在派生類中能訪問(wèn),就定義為protected。可以看出保護(hù)成員限定符是因繼承才出現(xiàn)的。
實(shí)際上面的表格我們進(jìn)行一下總結(jié)會(huì)發(fā)現(xiàn),基類的私有成員在子類都是不可見。基類的其他成員在子類的訪問(wèn)方式 == Min(成員在基類的訪問(wèn)限定符,繼承方式),public > protected > private。
使用關(guān)鍵字class時(shí)默認(rèn)的繼承方式是private,使用struct時(shí)默認(rèn)的繼承方式是public,不過(guò)最好顯示的寫出繼承方式。
在實(shí)際運(yùn)用中一般使用都是public繼承,幾乎很少使用protetced/private繼承,也不提倡使用protetced/private繼承,因?yàn)閜rotetced/private繼承下來(lái)的成員都只能在派生類的類里面使用,實(shí)際中擴(kuò)展維護(hù)性不強(qiáng)
- 5.基類和派生類對(duì)象賦值轉(zhuǎn)換
要注意這里的基類的指針是可以指向派生類的,子類對(duì)象可以賦值給父類對(duì)象/指針/引用這兩句話,后面會(huì)遇到
- 6.繼承中的作用域:
- 從代碼中很容易區(qū)分函數(shù)重載和同名隱藏的區(qū)別:因?yàn)樵诶^承體系中 基類和派生類都有獨(dú)立的作用域。
- 而函數(shù)重載是允許在 同一作用域中聲明幾個(gè)類似的同名函數(shù),這些同名函數(shù)的形參列表(參數(shù)個(gè)數(shù),類型,順序)必須不同,
總結(jié)
以上是生活随笔為你收集整理的C++中的继承(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++版二叉树非递归遍历
- 下一篇: C++中的继承(二)