Re: [问题] private继承问题

楼主: kiwatami (悠游自在)   2014-07-13 23:04:09
※ 引述《meya (落寞之心)》之铭言:
: class A{
: private int a1=1;
: }
: public class test extends A{
: public static void main(String[] args){
: test t=new test();
: System.out.println(t.a1);
: }
: }
: 子类别无法直接存取父类别的private a1,但
: 究竟子类别有无继承父类别的private a1?
: 应该用下列哪种理解才正确?
: (A)子类别内的a1继承自父类别的a1,只是父类别用private修饰a1,让其他类别无法直接
: 存取父类别内的a1
: (B)使用private修饰过的a1,无法被子类别继承
: 恳请回答谢谢
答案是A
当然有被继承
不然你用get会拿到什么?
用private只是封装变量不给外部使用
用意是在外部程式若随便更改变量可能会导致程式出现错误(当然这不是唯一的目的)
所以要封装起来由setter做更动
不一定正确啦 因为我满讨厌读定义的XD
你参考一下
作者: kogrs (kogrs)   2014-07-13 23:25:00
前面的回文已经有正解了......
楼主: kiwatami (悠游自在)   2014-07-14 12:42:00
有吗 前面都说无继承耶
作者: kogrs (kogrs)   2014-07-14 15:05:00
无继承是正解啊 然后这篇又给了一个不正确的答案....
作者: Kennyq (舞光十射~*)   2014-07-14 18:47:00
我也觉得无继承比较好理解...
楼主: kiwatami (悠游自在)   2014-07-14 19:23:00
无继承才不好理解吧 没有继承又可以存取 不是说不通吗
作者: TonyQ (自立而后立人。)   2014-07-14 22:28:00
应该说对“继承”这个字语意了解不一致吧。我对继承的想法是子类别拥有父类别实体,成员的继承是指直接在子类别能直接透过成员变量操作与取用父类别的成员。
作者: qrtt1 (有些事,有时候。。。)   2014-07-14 22:31:00
field 的继承归 field 的,method 的归 method 的。
作者: luoqr (.....)   2014-07-14 22:35:00
没继承当然不能"直接"存取呀
楼主: kiwatami (悠游自在)   2014-07-14 23:05:00
我的想法是 因为变量是实际存在 就像博美犬继承了犬这个类别 就继承了犬的四条腿这四个变量 因为怕基因突变 所以限制以犬的gettter, setter做存取 如果没有继承 那何来这四条腿呢?
作者: kogrs (kogrs)   2014-07-14 23:21:00
jetswayss 大的回文内都已经将官方文件都带出来了应该没有悬念了吧
楼主: kiwatami (悠游自在)   2014-07-15 22:08:00
官方文件有说我就不能问吗= =? 怎么感觉你很不想我发言
作者: Chikei ( )   2014-07-15 22:59:00
因为你一直在"你的想法"、"你觉得",这边是Java版我们在讨论的是Java,那当然所有不清楚的名词最终都以JLS为标准现在JLS直接说明了private field就是不会被继承,或者说这就是Java the Language的"继承"定义,你再觉得不合理也请接受,因为我们是在讨论Java语言。当然要来大战Java定义的继承跟一般programmer谈到继承时候的心灵模型一不一样不是不可,但很明显跟原po的问题无关
作者: TonyQ (自立而后立人。)   2014-07-16 06:21:00
其实我觉得都可以讨论啦 就是对语意了解不一致而已XD也没有人说不能/不想发言,原 po 多心了~ XD
楼主: kiwatami (悠游自在)   2014-07-16 08:58:00
不好意思 从小到大我觉得不合理的都不会接受... 没有要吵架的意思啦 只是觉得好像讲出自己的想法反而不行的感觉

Links booklink

Contact Us: admin [ a t ] ucptt.com