2012-05-07 61 views
0

我有一個懷疑在重寫。凌駕邏輯:初學者

class base{ 
public void amethod(){} 
} 
class child extends base{ 
public void amethod(int i){}} 

在這種情況下會發生什麼?方法是否被認爲是2個不同的方法?還是它仍然覆蓋?請澄清。

+2

這將是一件容易的事,可以通過JVM自行檢查。爲什麼不這樣做,而不是在這裏問呢?它會更快,更明確。 – duffymo

+0

在子類中使用'@ Override'。然後編譯器會報錯。 (類的命名約定是首字母大寫。) –

+0

@duffymo - 更快?是!權威?實驗給出確定的答案是值得商榷的。你需要做正確的實驗,並有足夠的理解來正確解釋結果!如果你想要明確的話,閱讀一本好書,Oracle教程......或者(最終是「權威性」)JLS。 –

回答

6

這不是重寫,而是overloading,而這兩者並不相關。

看一看的Java tutorial

重載方法是由數量和 傳遞到方法的參數的類型區分。在代碼示例中,draw(String s)和draw(int i)是不同且唯一的方法,因爲它們的 需要不同的參數類型。

0

在你的程序是不是重寫 BT是的,它是超載 .. 用於覆蓋法,派生類必須有方法用同樣的方法名稱,相同的參數列表和相同的返回類型爲基礎類.. 在你的情況下,兩種方法都有不同的參數列表。 更多重寫理解,請訪問:http://javabyroopam.blogspot.in/

0

重載爲兩種方法具有相同的名稱和返回類型,但不同的參數和壓倒一切意味着兩種方法具有相同的名字,相同的參數,相同的返回類型,但必須是一個在不同這兩種方法

public void amethod() 
    public void amethod(int i) 

我覺得你長了一點,這是超載沒有覆蓋 ...