看板 java 關於我們 聯絡資訊
※ 引述《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 你參考一下 -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.88.142 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1405263851.A.10B.html
kogrs:前面的回文已經有正解了...... 07/13 23:25
kiwatami:有嗎 前面都說無繼承耶 07/14 12:42
kogrs:無繼承是正解啊 然後這篇又給了一個不正確的答案.... 07/14 15:05
Kennyq:我也覺得無繼承比較好理解... 07/14 18:47
kiwatami:無繼承才不好理解吧 沒有繼承又可以存取 不是說不通嗎 07/14 19:23
TonyQ:應該說對「繼承」這個字語意瞭解不一致吧。 07/14 22:28
TonyQ:我對繼承的想法是子類別擁有父類別實體,成員的繼承是指直接 07/14 22:29
TonyQ:在子類別能直接透過成員變數操作與取用父類別的成員。 07/14 22:29
qrtt1:field 的繼承歸 field 的,method 的歸 method 的。 07/14 22:31
luoqr:沒繼承當然不能"直接"存取呀 07/14 22:35
kiwatami:我的想法是 因為變數是實際存在 就像博美犬繼承了犬這個 07/14 23:05
kiwatami:類別 就繼承了犬的四條腿這四個變數 因為怕基因突變 所以 07/14 23:05
kiwatami:限制以犬的gettter, setter做存取 如果沒有繼承 那何來這 07/14 23:05
kiwatami:四條腿呢? 07/14 23:05
kogrs:jetswayss 大的回文內都已經將官方文件都帶出來了 07/14 23:21
kogrs:應該沒有懸念了吧 07/14 23:22
kiwatami:官方文件有說我就不能問嗎= =? 怎麼感覺你很不想我發言 07/15 22:08
Chikei:因為你一直在"你的想法"、"你覺得",這邊是Java版我們在討 07/15 22:59
Chikei:論的是Java,那當然所有不清楚的名詞最終都以JLS為標準 07/15 22:59
Chikei:現在JLS直接說明了private field就是不會被繼承,或者說這 07/15 23:00
Chikei:就是Java the Language的"繼承"定義,你再覺得不合理也請接 07/15 23:00
Chikei:受,因為我們是在討論Java語言。 07/15 23:01
Chikei:當然要來大戰Java定義的繼承跟一般programmer談到繼承時候 07/15 23:08
Chikei:的心靈模型一不一樣不是不可,但很明顯跟原po的問題無關 07/15 23:09
TonyQ:其實我覺得都可以討論啦 就是對語意瞭解不一致而已XD 07/16 06:21
TonyQ:也沒有人說不能/不想發言,原 po 多心了~ XD 07/16 06:22
kiwatami:不好意思 從小到大我覺得不合理的都不會接受... 沒有要吵 07/16 08:58
kiwatami:架的意思啦 只是覺得好像講出自己的想法反而不行的感覺 07/16 08:58