輕松理解—繼承成員訪問控制機制
在我們學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計的時候,那么這個繼承成員訪問控制機制您必須對其有深入的了解,達(dá)到熟練掌握的目的;要不也許這點知識你不過關(guān),你對這點知識還抱著半信半疑的感覺,那么你一旦碰到這個問題,你的***個感覺就是“煩”。那么我們就深入淺出的來跟大家說說這個面向?qū)ο蟪绦蛟O(shè)計里邊的繼承這方面的知識。希望對大家有些許的幫助。
首先無論你的功底怎么樣,咱們還是先來了解一下這三種訪問控制:
public:公有成員說明列表;
protected:受保護(hù)成員說明列表;
private:私有成員說明列表;
我們來看一個表,我還是覺得用表來說明一些問題,大家應(yīng)該更容易的理解:
這個表就對私有、保護(hù)、公有的成員他的一個訪問控制情況做了一個分類,我們從這個表里邊應(yīng)該能理解到這么游戲誒知識點:
1、類自身來訪問私有、保護(hù)、。公有的函數(shù)以及數(shù)據(jù)是暢通無阻的,都能訪問,我們用圖來說明一下:
我們假設(shè)在這個類里邊,public有一個函數(shù)F1(),protected有一個函數(shù)F2(),private有一個函數(shù)F3(),那么我們的這個時候有一個public F4(),那么我們在的F4(){}是可以調(diào)用F1、F2、F3的。這個就跟咱們那個類自身的那一列就對上號了。還是比較容易理解的吧。#p#
2、派生類:比如我們一個類繼承自另外一個類,比如繼承這個基類,我們來看圖:
那么我們這個派生類是不能訪問私有成員的,圖中就是不能訪問F3,不能訪問父類的私有成員。這里也反映了一個問題,就是一個類的私有成員是不被繼承的;class2雖然繼承于class類,但是只能繼承公有的成員和受保護(hù)的成員保護(hù),而私有成員是不能訪問到的,因為沒繼承過去。
3、其他類:比如class3,不是我們這個類的子類,是一個其他的類,這個類當(dāng)中,如果想用到我們class當(dāng)中的成員,那只能用公有成員。就是:
我們另外還需要值得注意的是:
類的對象的訪問權(quán)限,相當(dāng)于其他類。我們看一段代碼來理解一下:
我們這么來理解,我們這里就相當(dāng)于一個外部的類class3對class1進(jìn)行訪問。我覺得這么來理解會容易很多。#p#
我們看一下在繼承過程中,加控制,會對成員有什么影響:我們來看一下這個表:
表分三列,基類成員訪問控制(我們在基類當(dāng)中函數(shù)是定義成公有的,還是保護(hù)的,還是私有的)、繼承訪問控制(在繼承的時候,用的什么樣的繼承關(guān)鍵字)、繼承的類(子類,在子類當(dāng)中對于父類當(dāng)中定義的的函數(shù)進(jìn)行訪問的時候,訪問控制情況如何),我們能看到:
1、我們看訪問控制public:
我們很容易的看的出來,私有成員是無法被繼承到的;我們可以把繼承理解為一種拷貝機制,生產(chǎn)一個子類,子類是一個父類的拷貝,我們在拷貝的過程當(dāng)中,把私有成員丟掉了,沒有拷貝過去,不允許被拷貝過來。#p#
2、繼承訪問控制:protected
我們看的出來,這個繼承訪問控制若是protected或者private的時候,那么在派生類中的訪問控制也就立馬變成了protected和private,當(dāng)然我們還是不要忘了private是無法繼承過來的。
繼承關(guān)系,沒有那么的復(fù)雜,以上有不對的地方,請大家指出,感激不盡。希望能幫助大家一起理解這個繼承~
【編輯推薦】