作者zanyking (最後的六年级生)
看板java
标题Re: [问题] private继承问题
时间Wed Jul 23 12:23:18 2014
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1406089401.A.ACF.html
1F:推 lovdkkkk:子 = 父的下面黏了一坨东西 感觉有点恶 XD 07/23 14:43
2F:推 kiwatami:谢谢! 这就是我想知道的答案 07/25 20:51