Re: [問題] private繼承問題

看板java作者 (最後的六年級生)時間9年前 (2014/07/23 12:23), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串16/17 (看更多)
※ 引述《kiwatami (悠游自在)》之銘言: 我想我對繼承的理解跟你是比較接近的。 我自己是從2個事實與幾個經驗去理解繼承: 1. 繼承的時候,sub class會從super class 既有的member context上再去疊加 自己的東西。 2. sub class 要存取super class的東西得通過修飾判定,標為private的不給用。 我的經驗: 1. 以前為了寫一個light weight container 的東西,所以得根據annotation runtime改POJO的private member field。 2. 曾經為了對付一個我動不了src的第三方程式庫裡的bug,reflection下去dirty patch 3. 玩 java iunstrumentation,偷改class定義套proxy做我自己的事情。 4. IDE Debugger 要追狀態是不是正確的時候 也就是『繼承』這個名詞的解釋,可以是從什麼觀點看過去的問題。 從物件導向的角度去看『繼承』這個字詞的定義: 看不見、不能用的就是沒有『繼承』到,所以沒有繼承。 回到super class 的private a1,sub class 雖然繼承了super class,但sub class 並沒有繼承a1。 a1是super class的,sub class 呼叫getA1()的時候,是透過getA1()這個跟 super class 繼承來的方法存取super class所持有的a1。 從記憶體使用、資料結構的角度(簡單說就是把『封裝』的概念丟掉)去看super class 、sub class的關係: runtime 的時候debugger 開起來,這個sub class我就是有看到super class的 member field啊。不過是『標記』為『private』而已,我真想用、硬改還不是一樣可以? 不曉得這樣有沒有回答到? -- 生命起源於簡單的化學反應,靈魂是腦神經上頭的火花。 掌紋沒有含意,不過是具有止滑功用的紋路。 而神不存在,死去的人們只是等待細菌分解的腐肉而已。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.164.59 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1406089401.A.ACF.html

07/23 14:43, , 1F
子 = 父的下面黏了一坨東西 感覺有點噁 XD
07/23 14:43, 1F

07/25 20:51, , 2F
謝謝! 這就是我想知道的答案
07/25 20:51, 2F
文章代碼(AID): #1JppYvhF (java)
討論串 (同標題文章)
文章代碼(AID): #1JppYvhF (java)