二、 繼承許可權
三、 隱藏
總結:在現實生活中,繼承
也是乙個比較普遍的概念,比如說貓科類
動物,其下又可細分為貓類
、豹類
、老虎類
等等;當然貓類
下面又可以細分更多類,其他亦然。
乙個新類從已有的類那裡獲得已有的成員,這種現象稱為類的繼承
。新定義的類稱為
派生類
或子類
,已有類稱為基類
或父類
。
繼承關係中,只有乙個基類
和派生類
的情況。
class
derived
-class
: access-specifier base-
class
derived-class:派生類;access-specifier:繼承許可權;base-class:基類。
如:
#include
using
namespace std;
// 基類 ①
class
shape
void
setheight
(int h)
protected
:int width;
int height;};
// 派生類 ②
class
rectangle
:public shape};
intmain
(void
)
首先回憶一下類的訪問許可權,即這裡不贅述,可以翻回去看看。public
、protected
、private
。
統一繼承也有許可權:public
、protected
、private
如下表:
繼承方式/基類成員
public成員
protected成員
private成員
public繼承
public
protected
不可見protected繼承
protected
protected
不可見private繼承
private
private
不可見例子:
class
a//父類
;classb:
public a //基類a的派生類b(公有繼承)};
classc:
private a //基類a的派生類c(私有繼承)};
classd:
protected a //基類a的派生類d(保護繼承)};
intmain()
隱藏
是指派生類的成員遮蔽了與其同名的基類成員。
如果派生類中的如下,基類定義:成員
(包括成員變數和成員函式)和基類中的成員重名
,那麼就會隱藏
從基類繼承過來的成員。
class
people
;void people::
showdetail()
派生類定義:
class
student
:public people
;
上述定義中,基類people
類中showdetail()
方法和派生類student
類中有同名的方法,即 ①.1和①.2處。
此時派生類student
中就會產生覆蓋
行為,如下呼叫:
int
main()
派生類student
的物件stu
,在呼叫showdetail()
方法時,就會呼叫派生類中的成員函式。即**②處。
當然基類people
類中的showdetail()
方法也同樣被繼承了下來,只是被隱藏
了,如果要呼叫,則需顯示
呼叫,即**③處。
例:
//基類people
class
people
;// ①
void people::
dosomething
(string things)
//派生類student
class
student
:public people
;// ②
void student::
dosomething()
上述**中,①為基類中的成員函式,②為派生類中的成員函式
int
main()
①處呼叫會報編譯錯誤,而正確呼叫是使用②處**。這正驗證了:
繼承關係中,對於基類和派生類的同名函式,不管函式的引數如何,只要名字一樣就會造成隱藏而不是過載。本節示例**1
本節示例**2
Python零基礎入門十六之繼承
class parent defhello self print 正在呼叫父類的方法.class child parent pass defhello self print 正在呼叫子類的方法.p parent p.hello c child c.hello 在類的繼承中需要注意的幾個問題 1 如果...
零基礎逆向工程15 C語言09 位運算
指令格式 sal sar reg mem,cl imm sal shift arithmetic left 算數左移 sar shift arithmetic right 算數右移指令格式 shl shr reg mem,cl imm shl shift left 邏輯左移 shr shift ri...
C 委託零基礎理解
說來慚愧,在大學的課程中,竟然沒有聽說過委託這個名稱。那麼今天我就帶著大家一起 下委託和事件。咱們先來看下委託 我主要從以下幾個方面講解 1,為什麼使用委託 2.什麼是委託 3.委託如何使用 為什麼使用委託?委託是c 中非常重要的乙個概念,使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以...