[問題] 繼承不同package類別 的 方法可見度?
最近看到這個頁面79題:
http://yaya741228.pixnet.net/blog/post/86130644
下方的回應有人提到:
原題中 packageB.XMLMessage 的 getText()
因為可見度的關係,並不是也沒有複寫父類別
packageA.Message 的同名 getText()。所以若將原題
System.out.println(new XMLMessage().getTxt());
換置成
Message msg = new XMLMessage();
System.out.println(msg.getText());
會編譯錯誤
小弟用Eclipse實驗的結果,確實跳出可見性錯誤
"The method getText() from the type Message is not visible"
----------
問題是:如何使換置後的版本編譯成功?
小弟原以為:
將 兩個 getText() 都改為 protected
並在 XMLMessage.java import packageA.* 應該就有足夠的可見度了
但實驗結果卻是:
只改成 protected 仍會出現可見性錯誤, 必須要改成 public 才能正確執行
---------
可是,不是 protected 即足以使不同 package 的子類別使用父類別的方法了?
為何此處一定要設定到public呢?
--------------
(附上小弟無法成功編譯的兩檔案--兩個getText()改成public即可成功)
Message.java
package packageA;
public class Message {
protected String getText(){return "aaa";}
}
XMLMessage.java
package packageB;
import packageA.*;
public class XMLMessage extends Message {
protected String getText(){return "<msg>text</msg>";}
public static void main(String[] args) {
Message msg = new XMLMessage();
System.out.println(msg.getText());
}
}
--------------
麻煩各位先進指引迷津了 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.60.172
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章