Re: [問題] private繼承問題

作者: zanyking (最後的六年級生)   2014-07-23 12:23:18
※ 引述《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』而已,我真想用、硬改還不是一樣可以?
不曉得這樣有沒有回答到?
作者: lovdkkkk (dk)   2014-07-23 14:43:00
子 = 父的下面黏了一坨東西 感覺有點噁 XD
作者: kiwatami (悠游自在)   2014-07-25 20:51:00
謝謝! 這就是我想知道的答案

Links booklink

Contact Us: admin [ a t ] ucptt.com