如果我們考慮這段代碼,是不是安全風險,如果是的話,爲什麼java允許它?爲什麼我可以增加子類中重載方法的可見性,它不是安全風險嗎?
class SomeApi
{
void someImportantInnerApiMethod()
{
//some operation
}
}
class MaliciousUserClass extends SomeApi
{
@Override
public void someImportantInnerApiMethod()
{
super.someImportantInnerApiMethod();
//inner api method now exposed
}
}
可見性與安全性無關。 –
「爲什麼」的問題過於寬泛,請參閱Eric Lippert的回答[如果語言規範問「爲什麼」仍然被認爲是「主要基於意見的」,如果它可以有正式答案?](http://meta.stackoverflow.com/q/323334/217324)我想這裏的答案是,因爲它不會傷害任何東西;如果你想確定一種方法,你可以把它做成最終的。 –
@DonBranson假設我有一個API&一些類是像上面的類「SomeApi」&用戶決定擴展和顯示所有內部保護/默認方法,那麼這不是一個安全問題? –