包內私有方法無法覆蓋,覆蓋需寬化許可權

2021-07-02 12:11:27 字數 632 閱讀 6410

package hack;

import click. codetalk;

public class typeit

}public static void main(string[ ] args)

}package click;

public class codetalk

void printmessage()

}本謎題看起來很直觀。 hack.typeit 的 main 方法對 typeit. clickit 類例項化,

然後呼叫其 doit 方法,該方法是從 codetalk 繼承而來。 接著,該方法呼叫

printmessage 方法,它在 typeit. clickit 中被宣告為列印 hack。然而,如果你

執行該程式,它列印的將是 click。 怎麼會這樣呢?

上面的分析做出了乙個不正確的假設,即 hack.typeit. clickit.printmessage

方法覆寫了 click. codetalk.printmessage 方法。乙個包內私有的方法不能被位

於另乙個包中的某個方法直接覆寫[jls 8. 4. 8] 。在程式中的這兩個 twomessage

方法是無關的,它們僅僅是具有相同的名字而已。當程式在

缺陷 覆蓋 私有方法

public calss privateoverride public static void main string args class derived extends privateoverride output private f 我們所希望的是輸出public f 但是由於private方...

陷阱 「覆蓋」 私有方法

public class privateoverride public static void main string args class derivedclass extends privateoverride 輸出結果為 private f private方法被自動認為是final方法,而且對...

Python 私有方法,專有方法

python的私有方法 以 雙劃線開頭,但不以雙劃線結尾,privatemethod 專有方法 以雙劃線開頭和結尾,init e.gclass person def init self,name self.name person def getname self return self.name a...