※ 引述《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前面的回文已經有正解了......
作者:
kogrs (kogrs)
2014-07-14 15:05:00無繼承是正解啊 然後這篇又給了一個不正確的答案....
作者:
Kennyq (舞光十射~*)
2014-07-14 18:47:00我也覺得無繼承比較好理解...
無繼承才不好理解吧 沒有繼承又可以存取 不是說不通嗎
作者:
TonyQ (自立而後立人。)
2014-07-14 22:28:00應該說對「繼承」這個字語意瞭解不一致吧。我對繼承的想法是子類別擁有父類別實體,成員的繼承是指直接在子類別能直接透過成員變數操作與取用父類別的成員。
作者:
qrtt1 (有些事,有時候。。。)
2014-07-14 22:31:00field 的繼承歸 field 的,method 的歸 method 的。
作者:
luoqr (.....)
2014-07-14 22:35:00沒繼承當然不能"直接"存取呀
我的想法是 因為變數是實際存在 就像博美犬繼承了犬這個類別 就繼承了犬的四條腿這四個變數 因為怕基因突變 所以限制以犬的gettter, setter做存取 如果沒有繼承 那何來這四條腿呢?
作者:
kogrs (kogrs)
2014-07-14 23:21:00jetswayss 大的回文內都已經將官方文件都帶出來了應該沒有懸念了吧
官方文件有說我就不能問嗎= =? 怎麼感覺你很不想我發言
作者:
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
不好意思 從小到大我覺得不合理的都不會接受... 沒有要吵架的意思啦 只是覺得好像講出自己的想法反而不行的感覺