2011-05-12 188 views
2

我一直在編寫方法重載和方法重載的幾個例子。 方法重載是靜態多態,重寫是動態多態。Java重寫和重載在編譯時拋出錯誤?

因此與重載任何錯誤將在編譯time..Correct被捕獲或者是當有一個運行時異常,因爲不正確超載引發的任何場景 - 我懷疑

相關的方法覆蓋任何錯誤( - 當子類方法與基類相同的名稱和相同的參數與基類----相同時)將在編譯時拋出。

在運行時出現異常的情況下,上述兩種情況下是否有任何情況?

回答

1

我無法想象如何方法重載可以導致運行時異常。

一些場景時不正確/不完整的方法重載可能導致運行時異常:

  1. 基本方法是抽象的,但它不是由子類實現 - 這可能發生,被重新編譯父類時,增加新方法,而子類沒有重新編譯(buggy懶惰編譯,或位於不同罐子中的類等)
  2. Overriden method is called from the constructor of a base class
  3. 與1相關:基本方法不抽象,但簽名已更改,而子類未重新編譯。所以它不會導致編譯錯誤,並會在運行時飛行。
+0

@Tarlog ..... kool .. 2場景確實有意義.. – crackerplace 2011-05-12 07:43:47

+0

我又增加了一個:) – Tarlog 2011-05-12 07:46:04

+0

@Tarlog ..... kool .. 2場景確實有意義。 。但是這些編譯類型的問題可能會造成同樣的問題,重載也..wherin我重載在一個孩子類。現在當我改變基類編譯它,我不編譯子類 - >笏你說? – crackerplace 2011-05-12 07:49:37

2

因此與超載 任何錯誤將在編譯 time..Correct被捕獲或者是否有任何 場景時,運行時異常是 拋出因爲不正確的 超載的 - 我懷疑

不,它不應該如果您的方法的代碼不會引發任何運行時異常。

相關方法 覆蓋任何錯誤( - 櫃面當孩子 類方法具有相同的名稱,基地 類相同的參數作爲基礎 類----的)將在編譯時 拋出。

這就是所謂的覆蓋。如果它不存在那麼它可能會拋出編譯時錯誤,如果你使用@Override

+0

確定如果我的代碼拋出一個異常,這與異常無關anywayz不涉及overloadng .. kooll ...我接受..仍然我的覆蓋問題是我們有任何運行時異常的概率.. – crackerplace 2011-05-12 07:33:14

+0

我不看到任何直到你的代碼生成 – 2011-05-12 07:38:15