Re: [問題] 繼承不同package類別 的 方法可見度?

看板java作者 (全新開始)時間11年前 (2014/03/16 20:38), 11年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
想了一天了解了,3Q!
03/17 16:09, 1F
※ 編輯: dream1124 (118.167.104.73), 04/02/2014 19:31:04
文章代碼(AID): #1J9PjLbc (java)
文章代碼(AID): #1J9PjLbc (java)