子類怎么訪問父類私有成員 子類中能不能繼承父類的私有變量和方法嗎嗎?
子類中能不能繼承父類的私有變量和方法嗎嗎?子類可以繼承父類的私有成員變量,但不能直接訪問私有成員。子類可以繼承父類的所有可見成員。對于Java,Java官方文檔解釋子類不能繼承父類的私有屬性,但是如果
子類中能不能繼承父類的私有變量和方法嗎嗎?
子類可以繼承父類的私有成員變量,但不能直接訪問私有成員。
子類可以繼承父類的所有可見成員。
對于Java,Java官方文檔解釋子類不能繼承父類的私有屬性,但是如果子類中的公共方法影響父類的私有屬性,則子類可以使用私有屬性。
子類怎樣訪問父類的私有數據成員?
首先,對于簡單類型,父類指針和子類指針可以完全重合。子類數據成員通常堆積在后面,因此它們的偏移量加上父類的大小是不好的。上面的例子是用GCC編譯的,有幾個地址是完全相同的:
可以看出,這正是常見C實現的情況。
那么不僅可以使用動態強制轉換,還可以使用靜態強制轉換。如果將父類指針放在靜態上,則強制轉換是一個子類,并且偏移量是在編譯時計算的,因此它是固定的并且是硬轉換的。當然,如果你不是子類,你以后會有機會飛出去。
子類是否能繼承父類的方法和屬性?
子類繼承父類,子類擁有父類的所有屬性和方法。對于程序驗證,不能直接訪問父類的私有屬性和方法子類。當然,私有屬性可以通過公共修改的getter和setter方法訪問,但是私有方法不能。假設:子類不能繼承父類的私有屬性和方法那么:分析內存后,會發現當子類實例化時,父類的構造方法默認情況下,將調用來初始化父類,即在內存中創建父類對象,然后子類的唯一屬性將放在父類對象的外部,并將兩者結合起來形成子類的對象。所以:子類繼承父類的所有屬性和方法是正確的,或者子類擁有父類的所有屬性和方法,但是子類不能直接訪問父類的私有屬性和方法。也就是說,它是擁有的,但沒有使用。