1. 程式人生 > >C++中的三種繼承public,protected,private

C++中的三種繼承public,protected,private

三種訪問許可權

public:可以被任意實體訪問

protected:只允許子類及本類的成員函式訪問

private:只允許本類的成員函式訪問

三種繼承方式

public 繼承

protect 繼承

private 繼承

組合結果

基類中 繼承方式 子類中

public & public繼承 => public

public & protected繼承 => protected

public & private繼承 = > private

protected & public繼承 => protected

protected & protected繼承 => protected

protected & private繼承 = > private

private & public繼承 => 子類無權訪問

private & protected繼承 => 子類無權訪問

private & private繼承 = > 子類無權訪問

由以上組合結果可以看出

1、public繼承不改變基類成員的訪問許可權

2、private繼承使得基類所有成員在子類中的訪問許可權變為private

3、protected繼承將基類中public成員變為子類的protected成員,其它成員的訪問 許可權不變。

4、基類中的private成員不受繼承方式的影響,子類永遠無權訪問。

此外,在使用private繼承時,還存在另外一種機制:准許訪問 。

我們已經知道,在基類以private方式被繼承時,其public和protected成員在子類中變為private成員。然而某些情況下,需要在子類中將一個或多個繼承的成員恢復其在基類中的訪問許可權。

C++支援以兩種方式實現該目的

方法一,使用using 語句,這是C++標準建議使用的方式

方法二,使用訪問宣告,形式為 base-class::member;, 位置在子類中適當的訪問宣告處。(注,只能恢復原有訪問許可權,而不能提高或降低訪問許可權)

c++ 中為什麼要定義public protect private 三種訪問許可權?

有些我們需要給外面看的,也就是對外介面,那麼就是public,如果沒有,那麼我們做的工作將是毫無意義的,(別人沒法用)

如果我們不想讓別人知道內部的實現細節,那麼就是private,比如,我們這麼:

public:

count()

{

  mycount();

}

private:

  mycount();

這樣的,count是對外的介面,而實現的時候,我們不想讓外面知道怎麼實現的,就用private,防止它用mycount!

如果我們不想讓別人知道,想讓自己的孩子什麼的知道(這裡涉及到繼承),那麼就可以作為protected!

這樣的話,private是自己私有的,protected是可以讓孩子知道的,public是公開的!

相關推薦

C++繼承publicprotectedprivate

三種訪問許可權 public:可以被任意實體訪問 protected:只允許子類及本類的成員函式訪問 private:只允許本類的成員函式訪問 三種繼承方式 public 繼承 protect 繼承 private 繼承 組合結果 基類中 繼承方式 子類中 public

C++創建對象的方法【轉】

內存 stream self 一般來說 ron ref 支持 內存碎片 搜索 我們都知道C++中有三種創建對象的方法,如下: #include <iostream> using namespace std; class A { private: in

c++參數引用方式

例子 機制 string ret 調用 esp roc tor cpp 傳值調用 是默認的參數傳遞機制,實參會復制給形參,調用的語義是每次取得實參的副本並將該復本用作形參,即會有復本的開銷,並且不改變實參的值。 適用於:傳值調用用於不應該被函數改變的小型對象。 例子:voi

C#單例模式

一、經典模式:     public class DoSomething     {         private static DoSomething doSomething;         private DoSomething() { }         pu

C++迴圈總結

一、迴圈語句     當程式中需要不斷的重複執行某個動作, 例如: 重複輸出1000行"Hello,world!", 如果自己寫一千行cout<<"Hello,world!";, 就算複製貼上也得一會時間, 這時迴圈語句就能派上大用場了。 1. for迴圈   

C#方法轉換字串變成數值型別

    第一種方法:convert.to…的方法     直接看例題就行:     第二種方法: int.parse(string)方法     再舉例:     第三種方法:int

AndroidonClick事件的實現與對比

在達內培訓,剛接觸android不久,對於button的onclick事件有點糾結。因為上了兩三天就換了個老師,兩個老師講onclick事件用了兩種不同的實現方法,我才發現可以有好幾種方式實現。 方式一:在activity的onCreate()方法中,嵌入如下程式碼: Bu

關於A+B+C問題語言的解決辦法Java、C語言、Python

原題是這個樣子的: 這是一個非常簡單的題目,意在考察你程式設計的基礎能力。千萬別想難了哦。輸入為一行,包括了用空格分隔的三個整數A、B、C(資料範圍均在-40~40之間)。輸出為一行,為“A+B+C”的計算結果。 樣例1 輸入: 22 1 3 輸出: 26

C++類的繼承方式public(公有繼承)、protected(保護繼承)、private(私有繼承)之間的差別(附思維導圖)【轉】

(轉自:https://blog.csdn.net/coco56/article/details/80467975) 注:若不指明繼承方式,則預設是私有繼承。 一:對於公有繼承(public)方式: 基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的p

phppublicprotectedprivate訪問控制模式及self和parent的區別(轉)

protected 屬性和方法 ted tor pre ons spa imp 數據 php的public、protected、private三種訪問控制模式的區別 public: 公有類型 在子類中可以通過self::var調用public方法或屬性,parent::m

2018年11月10日Java學習之類的特徵二:繼承extends重寫overrideprivatedefaultprotectedpublic訪問許可權修飾符,super關鍵字

1.類的繼承extends,舉個例子 2.子類繼承了父類,就繼承了父類的方法和屬性。 在子類中,可以使用父類中定義的方法和屬性,也可以建立新的資料和方法。 3.子類不能直接訪問父類中私有的(private)的成員變數和方法。 4.Java只支援單繼承,不允許

C#訪問修飾符作用範圍 publicprivateprotected、internal、protected internal

在C#語言中,共有五種訪問修飾符:public、private、protected、internal、protected internal。作用範圍如下表:訪問修飾符 說明public 公有訪問。不受任何限制。private 私有訪問。只限於本類成員訪問,子類,例項都不能訪

繼承的方法:public 繼承/private繼承/protected繼承詳解及區別

公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。  1. 公有繼承(public)    公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生

C++publicprotectedprivate用法 以及各種繼承方式的影響 (二)

在學習C++時經常會混淆public、protected、private在繼承中的概念,於是寫在此部落格加深理解。  首先記住以下三點: 使用者程式碼(類外)只能訪問public成員變數和public成員函式。 子類(繼承類)能訪問基類的public和protected

java面向物件許可權(privateprotectedpublic友好型)詳解

俗話說沒有規矩就沒有方圓,java作為一門嚴謹的面向物件的高階程式語言,自然對許可權整個重要的問題有嚴格的控制。 Java一共有四種許可權,private (私有),public(公有)。Protected(受保護)還有友好型。 在java裡,這些語句都可以修飾類中的成員變

js oop繼承方法

custom 屬性方法 三種 調用方法 定義 this指向 兩個類 fun color JS OOP 中的三種繼承方法: 很多讀者關於js opp的繼承比較模糊,本文總結了oop中的三種繼承方法,以助於讀者進行區分。 <繼承使用一個子類繼承另一個父類,子類可以自

JAVA 的權限訪問修飾符(publicprotecteddefaultprivate

wid 權限 adding 無標題 none 相對 padding logs cte JAVA中有四個權限訪問修飾符:public,protected,default,private註意:這裏講的是對類中屬性和方法的訪問權限,並不是類的訪問權限1.default:包訪問權限

深入理解C++publicprotectedprivate用法

strong ostream pro index nbsp contain table bsp 新的 深入理解C++中public、protected及private用法 投稿:shichen2014 字體:[增加 減小] 類型:轉載 時間:2014-08-23 我要評論

C++publicprotectedprivate的差別

影響 dsm sin 使用 pub 聲明 友元 fff c++ 第一: private,public,protected的訪問範圍: private: 僅僅能由該類中的函數、其友元函數訪問,不能被不論什麽其它訪問。該類的對象也不能訪問. protect

C++: 繼承和多型(一)繼承方式與許可權

繼承 在C++中,我們常要對某個函式進行多次複用,例如: 資訊管理系統中,對於教師、學生、教務人員等"類"而言,有部分資訊是通用的:姓名,性別,年齡,聯絡方式等。如果為每一種角色都編寫一個"類",會有不少重複的程式碼,造成效率上的浪費。       &nbs