java 板


LINE

※ 引述《lovdkkkk (dk)》之铭言: : 意思是 call 自己的与 invoke 别人的的差别? : 如果这是主因,而和 Test 是不是自己的 subclass 无关的话... : 这样去想感觉有点更复杂,先暂停 XDD : (super.protectedMethod 之类... : 痾,暂停暂停) : 总之,受教了。 我其实还蛮苦恼的,因为 protected 与 package default 修饰词的差别对不少人 来说是模糊的(这包括那些可以说出「 protected 就是比 package default 多了在 subclass 可以用」的人),但是我尚未发现一个比较能够让人了解的说法。 或许这是我最後一次尝试了,不以文字叙事为主的说明方式,而是以比较完整却 又不是非常复杂的表列方式,来揭露 protected 与 package default 的差异。 首先假设有一个 class C 属於 package P。 为了单纯,由 class A 可以 access 到 class B 的那些 memeber,构成 B 对 A 的界面(就是 A 看 B 时能看到的东西),凡是 class A 面对 B 时所无法 存取到的(不管编译器抱怨的理由是什麽),就不属於 B 对 A 的界面。 那麽下表一,横列是定义於 C 的 member。 纵轴是 C 对各种类型的 class 的界面是否包含横列所示的 member。 #表一 member defined in C public package protected private ==================================================================== class C O O O O class other than C O O O X in P class other than C O X X X NOT in P class derived from C O O O X in P class derived from C O X X X NOT in P 这部分应该是为人熟悉的:因为标的物是定义 member 的 class C,所以 protected 与 package default 是完全相同的。 接着假设有个 class D extends C in P,class E extends C NOT in P (p.D extends p.C, q.E extends p.C) #表二 针对 class D 对左列类型所透露出的界面 member defined in C public package protected private ==================================================================== class D O O O X class other than D O O O X in P class other than D O X X X NOT in P class derived from D O O O X in P class derived from D O X X X NOT in P protected 与 package default 的作用依然无差别,因为 subclass D 与 C 同在 P, "继承"造成的影响被 package default 的影响覆盖。 另,除了 private 在继承方面起了作用外,表二与表一是一样的。 #表三 针对 class E 对左列类型所透露出的界面 member defined in C public package protected private ==================================================================== class E O X O X class other than E O X O X in P class other than E O X X X NOT in P class derived from E O X O X in P class derived from E O X X X NOT in P 这里显露出 protected/package default 的差别,当 subclass E 不在 package P 中,protected 跳出 package default 的涵盖范围,得显露出其独特的影响力。 我前一篇提到把 protected member 看成可透过继承而视同定义在 subclass 的 看法,对许多人而言是比较容易去理解与接受的,但是他的缺点是抱持这种观点者, 实不容易正确写出表二、表三。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.238.36.204
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1399882611.A.C8A.html
1F:推 TonyQ:推~ package default 其实真的不太容易说明 XD 05/12 16:28
※ 编辑: sbrhsieh (36.238.36.204), 05/12/2014 17:13:34
2F:→ sbrhsieh:真的要说 protected 多出来的作用就是表三的列一而已。 05/12 17:18
3F:→ sbrhsieh:表三其他列还是由 package default 主导。 05/12 17:21
4F:→ sbrhsieh:以上是在把 protected 看成 package 加上什麽的看法而言 05/12 17:24
5F:推 lovdkkkk:推列表 XD 05/12 18:27







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP