which two declaretions prevent the overriding of a method? A. final void methoda(){} B. void final methoda(){} C. static void methoda(){} D. static final void methoda(){} E. final abstract void methoda(){}
2 回答

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
一般工具類會提供static final的方法。static是類上的方法,可以直接在class級別調用,final阻止子類重寫。
比如Collection framework里面的Collections類里面就提供了幾個static final的方法
emptyMap,emptyList,emptySet

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
剛開始,對于D我感覺非常奇怪,本來static方法(類方法)就是不會被重寫的,加上final是沒有意義的,但是編譯器卻沒有報錯;
后來我發現D選項的static方法加上final還有有一定的區別的:首先,正常情況下static方法是不能被重寫的,static方法是編譯期就確認的調用,即使子類里聲明并實現了相同簽名的static方法,這也不是重寫。其次,如果加上final后,發現在子類中就不能聲明并實現相同簽名的static方法,編譯器會報錯說不能重寫該方法;
按上面所說,這道題的D也可以算作正確而已;通常我們是不會用final來修飾static方法的;
添加回答
舉報
0/150
提交
取消