使用關鍵字final
可以避免重寫一個方法,同樣如何防止重載?如何防止在Java中重載方法?
回答
你不能用Java來做到這一點。
重載的方法基本上只是另一種方法。
的嘗試可以看看(東西)這樣
void yourMethod(String arg) { /* ... */ }
void yourMethod(String arg, Object... prevent) {
throw new IllegalArgumentException();
}
但自從Java做出決議通過看「最佳匹配」或「最具體的簽名」超載將無法正常工作。
的方法仍然可以用
void yourMethod(String arg, String arg2) { /* ... */ }
這將做yourMethod("hello", "world")
時被調用過載。
順便說一句,你爲什麼要防止重載?也許還有另一種做你想做的事情的方式?
標記類最終,它不能被擴展。這可能會挫敗其他一些目的。
如果重載方法,則創建了一個名稱相同但參數類型不同的方法。在Java中,根據其參數定義(部分)方法,因此如果兩種方法具有相同的名稱但參數不同,則它們是蘋果和桔子,即不相同。總之,你不能阻止某人在課堂上創建新的方法,這實質上就是你所要求的。
您可以防止的方法被通過使其最終覆蓋,但你不能阻止一個方法被超載。從技術上講,你可以讓這個類本身是最終的,所以根本沒有任何方法可以通過創建一個子類來添加,但我認爲這不是一個好的設計。
方法被覆蓋,不被覆蓋。 – 2010-06-07 07:39:04
你有六年的時間來解決這個問題。投票刪除。 – EJP 2016-05-27 04:14:52
你不能。因爲它幾乎毫無意義。
如果您想超載方法handle(..)
但您不允許,則您將創建doHandle(..)
。
在編譯時確定使用哪種重載方法(與在運行時確定的重寫方法相反)。所以重載的重點是共同的名稱共同操作。禁止這是代碼式的問題,而不是其他任何事情。
+1無意義。編譯器永遠不會選擇重載方法中的一個,而不是重載方法。 – 2010-06-07 07:51:05
錯誤...不允許超載的方法是什麼?
防止覆蓋是允許的,因爲它可以由另一個程序員完成,他可能是另一部分代碼,他的類是從你的類繼承的。
重載是在同一個類中完成的,邏輯上應該由知道該代碼的程序員完成,並且正在處理代碼的相同部分。所以,如果他知道這個代碼(理論上)並且超載有一些固有的危險,那麼他應該知道這一點,因爲他知道代碼。
也就是說,超載不能像其他人已經描述的那樣停止。
簡單!不要調用那個重載的方法。
public class Test
{
public void m(int a)
{
*your definition*
}
public void m(float a)
{
*your definition*
}
}
public static void main(Strings [] args)
{
Test t=new Test();
t.m(5);
}
- 1. 在Java中重載方法?
- 2. Java - 防止破壞方法
- 3. 如何防止在派生類中重寫方法?
- 4. 防止uitableView重載
- 5. 如何防止用「#」onclick重新加載?
- 6. 如何防止頁面重新加載?
- 7. 如何防止頁面重新加載
- 8. 如何防止在@ModelAttribute方法
- 9. Java中方法的重載
- 10. 如何防止重複。 Java,SQL
- 11. Java方法重載
- 12. Java,重載方法
- 13. 如何防止反射訪問java中的類或方法
- 14. Android:如何防止方向更改後重新加載活動?
- 15. 如何防止在Java中找到「Validation.EncodingRequired」
- 16. 我如何使方法停止並重新開始在Java中
- 17. 重載equals方法在Java中
- 18. 方法重載與泛型在Java中
- 19. 如何在Android中防止多重Dex
- 20. 在java中加載spritesheet時如何防止我的FPS掉線?
- 21. 如何防止在裝載機中頁面的重新創建?
- 22. 重寫重載的Java方法JRuby中
- 23. 如何防止在Java數據庫中使用重複插入?
- 24. 如何防止我的ArrayList在Java GUI中重置?
- 25. 如何防止在java中重新排序
- 26. 有沒有一種方法可以防止Spring Boot重載bean?
- 27. 防止重複串JAVA
- 28. 就是Java防止重寫靜態方法?
- 29. 在C#中如何重載Finalize()方法?
- 30. 如何在C#中重載方法?
...例如重寫:-) – aioobe 2010-06-07 07:31:37