成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c++中的繼承關(guān)系是什么

這篇文章主要介紹了c++中的繼承關(guān)系是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇c++中的繼承關(guān)系是什么文章都會有所收獲,下面我們一起來看看吧。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蚌埠,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

1 什么是繼承

繼承概念

繼承(inheritance)機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能。這樣產(chǎn)生新的類,稱派生類。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu),體現(xiàn)了由簡單到復(fù)雜的認(rèn)知過程。

面向?qū)ο蟮睦^承關(guān)系指類之間的父子關(guān)系。用類圖表示如下:

c++中的繼承關(guān)系是什么

2 為什么要有繼承?/ 繼承的意義?

因?yàn)槔^承是面向?qū)ο笾写a復(fù)用的一種手段。通過繼承,可以獲取父類的所有功能,也可以在子類中重寫父類已有的功能 以及 添加父類中沒有的功能。

3如何理解 子類是特殊的父類?

因?yàn)樽宇惒粌H繼承了父類所有的屬性與行為,而且在子類中還可以重寫父類已有的功能,以及添加自己的新屬性與新方法。這也就是說子類對象可以當(dāng)作父類對象使用。

4 繼承的規(guī)則

1) 子類是特殊的父類

2) 子類對象可以直接初始化父類對象

3) 子類對象可以直接賦值給父類對象

5 繼承中的訪問級別

1)public:在類的內(nèi)部和外部都可以訪問。

2)protected::可以在類的內(nèi)部使用,不可以在類的外部直接使用。,但是存在繼承關(guān)系時(shí),可以在子類中使用父類的protected的成員。

3)private:只可以在類的內(nèi)部使用,不可以在類的外部使用。

注:類的內(nèi)部:在當(dāng)前類的作用域中(不包括子類的作用域);類的外部:類內(nèi)部之外的作用域(包括子類的作用域)

問題1:子類是否可以直接訪問父類中的private成員(非公有成員)嗎?(No)

1)從面向?qū)ο罄碚摰慕嵌确治?,可知子類擁有父類一切的屬性與行為,得出的結(jié)論:Yes

2)從c++的語法角度分析,可知外界不能訪問類的private成員,得出的結(jié)論:No

問題2:談?wù)?protected關(guān)鍵字的存在的意義?

protected關(guān)鍵字是為繼承而存在的,這樣就可以在子類中訪問父類的protected成員,同時(shí)還不允許外界直接訪問父類中的protected成員。

問題3:在類中如何選擇類的訪問級別?--- 見下圖

c++中的繼承關(guān)系是什么

6 繼承中的繼承方式

1)public 繼承方式 --- 父類成員在子類中保持原有的訪問級別。

2)protected繼承方式 ---父類中的公有成員在子類中變成了protected成員,其它不變。

3)private 繼承方式(默認(rèn)) --- 父類成員在子類中變成了private成員

可歸納為:

c++中的繼承關(guān)系是什么

結(jié)論:無論選擇哪種繼承方式,都不會影響子類訪問父類成員的級別

注:1) c++ 工程項(xiàng)目中只使用 public 繼承方式;

2) c++ 派生語言(jave,c#)只支持 public繼承方式;

3)protected、private 繼承方式帶來的復(fù)雜性遠(yuǎn)大于其實(shí)用性;(舍棄不用)

用代碼實(shí)現(xiàn)類圖中的功能:

c++中的繼承關(guān)系是什么

代碼如下:

 #include <iostream>
  #include <string>
  #include <sstream>
  
  using namespace std;
  
 class Object
  {
  protected:
     string mName;
     string mInfo;
 public:
     Object()
     {
         mName = "Object";
         mInfo = "";
     }
     inline string getName()
     {
         return mName;
     }
     inline string getInfo()
     {
         return mInfo;
     }
 };
 
 class Point : public Object
 {
 private:
     int mX;
     int mY;
 public:
     Point(int x = 0, int y = 0)
     {
         ostringstream oss;
 
         mX = x;
         mY = y;
         mName = "Point";
         
         oss << "Point(" << mX << ", " << mY << ")";
         mInfo = oss.str();
     }
     inline int getX()
     {
         return mX;
     }
     inline int getY()
     {
         return mY;
     }
 };
 
 class Line : public Object
 {
 private:
     Point mP1;
     Point mP2;
 public:
     Line(Point p1, Point p2)
     {
         mP1 = p1;
         mP2 = p2;
         mName = "Line"; 
         mInfo = "Line from " + p1.getInfo() + " to " + p2.getInfo();
     }
     inline Point getStartPoint()
     {
         return mP1;
     }
     inline Point getEndPoint()
     {
         return mP2;
     }
 };
 
 int main(int argc, char const *argv[])
 {
     Object obj;
     cout << obj.getName() << endl;
     cout << obj.getInfo() << endl << endl;
 
     Point p1(1, 2);
     Point p2(3, 4);
     cout << p1.getName() << endl;
     cout << p1.getInfo() << endl;
     cout << p2.getName() << endl;
     cout << p2.getInfo() << endl << endl;
 
     Line line(p1, p2);
     cout << line.getName() << endl;
     cout << line.getInfo() << endl << endl;
 
     return 0;
 }

關(guān)于“c++中的繼承關(guān)系是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“c++中的繼承關(guān)系是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:c++中的繼承關(guān)系是什么
轉(zhuǎn)載源于:http://jinyejixie.com/article46/ghojhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站排名網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
高尔夫| 工布江达县| 铅山县| 叙永县| 佛学| 高密市| 社旗县| 察隅县| 香港 | 木里| 昌乐县| 全州县| 永昌县| 甘德县| 乌兰浩特市| 公安县| 隆尧县| 宜州市| 上杭县| 铁岭县| 彭阳县| 闸北区| 鹿泉市| 天门市| 任丘市| 清流县| 夹江县| 于田县| 安泽县| 上林县| 亚东县| 金溪县| 临武县| 承德市| 永济市| 林口县| 新余市| 博罗县| 吉首市| 沈丘县| 于都县|