C 零基礎(09) 繼承與隱藏

2021-09-28 18:42:23 字數 2979 閱讀 2604

二、 繼承許可權

三、 隱藏

總結:在現實生活中,繼承也是乙個比較普遍的概念,比如說貓科類動物,其下又可細分為貓類豹類老虎類等等;當然貓類下面又可以細分更多類,其他亦然。

乙個新類從已有的類那裡獲得已有的成員,這種現象稱為類的繼承

新定義的類稱為派生類子類,已有類稱為基類父類

繼承關係中,只有乙個基類派生類的情況。

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

)

首先回憶一下類的訪問許可權,即publicprotectedprivate

這裡不贅述,可以翻回去看看。

統一繼承也有許可權:publicprotectedprivate

如下表:

繼承方式/基類成員

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 中非常重要的乙個概念,使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以...