關於私有變數和私有方法在繼承中的觀點

2021-10-10 09:40:49 字數 768 閱讀 9539

從書中看到子類繼承du父類,子類擁有父zhi類所有的屬性和方法,發現父類的私

有屬性和私有方法,子類是不能訪問的,當然一些父類的私有屬性可能可以通過

相應的方法訪問到,但是私有的方法似乎不能簡單的訪問,於是我分析,子類不

能繼承父類私有的屬性及方法,但是分析了記憶體後,我發現我是錯的,在乙個子

類被建立的時候,首先會在記憶體中建立乙個父類物件,然後在父類物件外部放上

子類獨有的屬性,兩者合起來形成乙個子類的物件。所以所謂的繼承使子類擁有

父類所有的屬性和方法其實可以這樣理解,子類物件確實擁有父類物件中所有的

屬性和方法,但是父類物件中的私有屬性和方法,子類是無法訪問到的,只是擁

有,但不能使用。就像有些東西你可能擁有,但是你並不能使用。所以子類物件

是絕對大於父類物件的,所謂的子類物件只能繼承父類非私有的屬性及方法的說

法是錯誤的。可以繼承,只是無法訪問到而已。想要訪問的話只能通過一些的方

法通道來去訪問。下面我們就舉個例子。

class

bpublic

intgetm()

}public

class

aextends

b}

在b類中的變數m是私有變數我們在類中通過繼承的方法仍然可以呼叫m並對它進行賦值和獲取操作。這裡我們操作的並不是類b中的變數m而是a繼承的變數m。我們可以認為是此時的它儲存在a類的堆記憶體中而不是b類。想要更好的了解此部分,把繼承的記憶體分析圖弄明白會更好理解。

私有變數和私有方法

person.h oc語言學習 import 例項變數 成員變數 既可以在 inte ce中定義,也可以在 implementation中定義 inte ce person nsobject 如果只有方法的實現,沒有方法的宣告,那麼該方法就是私有方法 但是在oc中沒有真正的私有方法,因為oc是訊息機...

76,私有變數和私有方法

import inte ce person nsobject end implementationperson 下面是私有的成員變數 void setname nsstring name void setage int age nsstring name int age print 就是私有方法 v...

python 私有方法,私有屬性 在繼承中的表現

每天一點點 python 私有方法,私有屬性 在繼承中的表現 情況1 如果呼叫的是繼承父類中的公有方法,那麼,可以在這個公有方法 中訪問父類的私有屬性和私有方法 情況2 如果在子類中實現了乙個公有方法,那麼,這個方法是不能呼叫 繼承的父類中的私有方法和私有屬性的 私有方法,私有屬性在繼承中的表現 c...