如果我說在其他包中訪問受保護的方法?
class A{
}
然後它含蓄地繼承對象class.So我有如下類別:
class A{
protected Object clone(){
} /// Here i am not overridning
//All the other methods (toString/wait/notify/notifyAll/getClass)
}
現在爲什麼不能我訪問B類的clone()方法是在相同的A類包中。
Class B{
A a = new A();
a.clone();
**
}
// **說明clone在Object類中是受保護的。但是我沒有訪問Object的克隆方法。在這裏我調用了A類的克隆方法,但是我還沒有重載。
你的片段是誤導性的非常相同的錯誤。 類A {} 和 類A { 保護的克隆(){}} 是不等價的。在第一種情況下,當您在代碼段2中執行時,您不會實現克隆方法。您調用的錯誤不會與代碼段2一起顯示。 – dodecaplex 2010-07-02 09:23:39
它不會回答您的問題,但在新API中優先選擇靜態工廠方法或將構造函數複製到克隆()。 – helpermethod 2010-07-02 09:47:31
什麼意思你評論'///我在這裏沒有overridning'?你怎麼沒有壓倒它?在Object中,'clone'方法與'A.clone'具有完全相同的簽名,所以它重寫它。 – 2010-07-02 09:51:37