????這幾天在看Java程序設計案例,總是弄不清楚繼承關系中的private:為什么子類中無法直接調(diào)用private變量進行操作膛薛,而是要通過父類public方法進行操作沮榜。
????以前我對繼承的理解是:子類與父類是分割開的,在子類實例化中,是完完全全的子類實例化揪荣,繼承過程只是把父類的同名變量和方法復制給子類一份,避免子類代碼的冗雜往史。
????查了一圈博客園找到了相關資料仗颈,找到了一句話:
當一個子類被實例化的時候,默認會先調(diào)用父類的構造方法對父類進行初始化椎例,即在內(nèi)存中創(chuàng)建一個父類對象挨决,然后再父類對象的外部放上子類獨有的屬性,兩者合起來成為一個子類的對象订歪。
????不嚴謹?shù)恼f脖祈,子類與父類相同的部分其實是屬于父類的內(nèi)存空間,在這上面的private成員刷晋,實際是屬于父類的盖高。子類要想調(diào)用這部分成員,必須經(jīng)過父類的public方法進行操作眼虱。
????這種理解喻奥,也能幫助理解super關鍵字的作用:調(diào)用父類的內(nèi)存空間進行操作。