C++類和對象知識點整理四---繼承

21、C++繼承的概念及語法
a.繼承是類與類之間的關係,是一個很簡單的直觀概念,與現實世界中的繼承類似。


繼承(lnheritance)可以理解爲一個類從另一個類獲取成員變量和成員函數的過程。被繼承的類稱爲父類或者是基類。繼承的類稱爲子類或者是派生類,派生類除了擁有基類的成員,還可以定義自己的新成員,以增強類的功能。


b.以下是2種典型的使用繼承的場景
(1)當你創建的新類與現有的類相似,只是多出若干成員變量或成員函數時,可以使用繼承,這樣不但可以減少代碼量,而且新類會擁有基類 的所有功能


(2)當你需要創建多個類,他們有用很多相似的成員變量或成員函數時,也可以使用繼承,可以將這些類的共同成員提取出來,定義爲基類,然後從基類繼承,既可以節省代碼,也可以後續修改成員


c.繼承方式包括public,protected,private,此項可以不寫,默認爲private


1) public繼承方式
基類中所有 public 成員在派生類中爲 public 屬性;
基類中所有 protected 成員在派生類中爲 protected 屬性;
基類中所有 private 成員在派生類中不能使用。


2) protected繼承方式
基類中的所有 public 成員在派生類中爲 protected 屬性;
基類中的所有 protected 成員在派生類中爲 protected 屬性;
基類中的所有 private 成員在派生類中不能使用。


3) private繼承方式
基類中的所有 public 成員在派生類中均爲 private 屬性;
基類中的所有 protected 成員在派生類中均爲 private 屬性;
基類中的所有 private 成員在派生類中不能使用


注意:由於private和protected繼承方式會改變積累成員在派生類中的訪問權限,導致繼承關係複雜,所以實際開發中我們一般使用public。


不管繼承方式如何,激烈中private成員在派生類中始終不能使用(不能再派生類的成員函數中訪問或調用)


如果不希望基類的成員既不向外暴露(不能通過對象訪問),還能在派生類中使用,那麼只能聲明爲protected。


d.改變訪問權限


使用using關鍵字可以改變基類成員在派生類中的訪問權限,列如將public改爲private,將private改爲public


e.c++繼承時名字遮蔽
如果派生類中的成員(包括成員變量和成員函數)和基類中的成員重名,那麼就會遮蔽從基類繼承過來的成員。
所謂的遮蔽,就是在派生類中使用該成員時,實際上使用的是派生類新增的成員,而不是從基類繼承過來的。


如果仍要訪問基類中的成員,要在前面加上類名和域解析符。


f.基類成員函數和派生類成員函數不構成重載
基類成員和派生類成員的名字一樣時會造成遮蔽,這句話對於成員變量很好理解,對於成員函數要引起注意,不管函數的參數如何,只要名字一樣就會造成遮蔽,換句話說,基類成員函數和派生類成員函數不會造成重載,如果派生類有同名函數,那麼就會遮蔽基類中所有的同名函數,不管他們的參數是否一樣。































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章