輕鬆理解—繼承成員訪問控制機制

在我們學習面向對象程序設計的時候,那麼這個繼承成員訪問控制機制您必須對其有深入的瞭解,達到熟練掌握的目的;要不也許這點知識你不過關,你對這點知識還抱着半信半疑的感覺,那麼你一旦碰到這個問題,你的第一個感覺就是“煩”。那麼我們就深入淺出的來跟大家說說這個面向對象程序設計裏邊的繼承這方面的知識。希望對大家有些許的幫助。

首先無論你的功底怎麼樣,咱們還是先來了解一下這三種訪問控制:

public:公有成員說明列表;

protected:受保護成員說明列表;

private:私有成員說明列表;

我們來看一個表,我還是覺得用表來說明一些問題,大家應該更容易的理解:


這個表就對私有、保護、公有的成員他的一個訪問控制情況做了一個分類,我們從這個表裏邊應該能理解到這麼遊戲誒知識點:

1、類自身來訪問私有、保護、。公有的函數以及數據是暢通無阻的,都能訪問,我們用圖來說明一下:


我們假設在這個類裏邊,public有一個函數F1(),protected有一個函數F2(),private有一個函數F3(),那麼我們的這個時候有一個public F4(),那麼我們在的F4(){}是可以調用F1、F2、F3的。這個就跟咱們那個類自身的那一列就對上號了。還是比較容易理解的吧。

2、派生類:比如我們一個類繼承自另外一個類,比如繼承這個基類,我們來看圖:

那麼我們這個派生類是不能訪問私有成員的,圖中就是不能訪問F3,不能訪問父類的私有成員。這裏也反映了一個問題,就是一個類的私有成員是不被繼承的;class2雖然繼承於class類,但是隻能繼承公有的成員和受保護的成員保護,而私有成員是不能訪問到的,因爲沒繼承過去。

3、其他類:比如class3,不是我們這個類的子類,是一個其他的類,這個類當中,如果想用到我們class當中的成員,那隻能用公有成員。就是:

我們另外還需要值得注意的是:

類的對象的訪問權限,相當於其他類。我們看一段代碼來理解一下:


我們這麼來理解,我們這裏就相當於一個外部的類class3對class1進行訪問。我覺得這麼來理解會容易很多。

我們看一下在繼承過程中,加控制,會對成員有什麼影響:我們來看一下這個表:


表分三列,基類成員訪問控制(我們在基類當中函數是定義成公有的,還是保護的,還是私有的)、繼承訪問控制(在繼承的時候,用的什麼樣的繼承關鍵字)、繼承的類(子類,在子類當中對於父類當中定義的的函數進行訪問的時候,訪問控制情況如何),我們能看到:

1、我們看訪問控制public:

我們很容易的看的出來,私有成員是無法被繼承到的;我們可以把繼承理解爲一種拷貝機制,生產一個子類,子類是一個父類的拷貝,我們在拷貝的過程當中,把私有成員丟掉了,沒有拷貝過去,不允許被拷貝過來。

2、繼承訪問控制:protected

我們看的出來,這個繼承訪問控制若是protected或者private的時候,那麼在派生類中的訪問控制也就立馬變成了protected和private,當然我們還是不要忘了private是無法繼承過來的。

繼承關係,沒有那麼的複雜,以上有不對的地方,請大家指出,感激不盡。希望能幫助大家一起理解這個繼承~


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