Re: [問題] 繼承不同package類別 的 方法可見度?
※ 引述《skipeco (skipeco)》之銘言:
這是個好問題,如果只從常見教學文件中的 protected 修飾詞字面意思角度解釋,
看到也會直覺認為有點奇怪
不過我想這可能是有些教學文件都說得不夠仔細的緣故,只講了一個大概原則
沒有特別說明是怎麼樣的存取,也沒有說明是來自靜態成員還是特定類別的實例。
當他們說 protected 修飾後的類別成員,只要其他套件的類別繼承就可以存取的時候,
在非靜態的一般成員,也就是類別實例建構出來的成員部分,
意思是指其他套件繼承後的"實例"可以存取父類別"實例"的方法,
而且這個父類別的實例必須是繼承者實例的父親,
也就是在 new XClass()的時候,那個會比 XClass 的實例還要先去建構的父類別實例。
以這個例子來說,main 裡面寫的 Message msg = new XMLMessage()
相當於在 XMLMessage 靜態成員裡面建構一個 XMLMessage 的實例,
msg 和 main 兩者並沒有親子關係,不符 protected 的存取條件
要在 main 裡面存取 XMLMessage 的 getText(), 就要讓兩個類別的 getText()
都加上 static 修飾詞,成為父子關係,
或著從 XMLMessage 的一般方法裡面, 呼叫 super.getText()
存取父類別實例的 getText()。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.162.121.191
推
03/17 16:09, , 1F
03/17 16:09, 1F
※ 編輯: dream1124 (118.167.104.73), 04/02/2014 19:31:04
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章