2012-02-19 372 views
2

如果我要重寫以下方法:覆蓋方法

public Machine makeMachine(String machineName, int machineSize) 
{ 
    return new Machine(machineName, machineSize); 
} 

有了:

public Machine makeDramaticMachine(String machineName, int machineSize) 
{ 
    return new DramaticMachine(machineName, machineSize); 
} 

這會是正確的嗎?

+0

簽名仍然是這樣的:public machine makeMachine(String machineName,int machineSize) – AkshaiShah 2012-02-19 13:22:59

回答

6

不,不會因爲您更改了方法「簽名」。方法名稱及其參數列表必須保持不變才能成爲真正的覆蓋。始終使用@Override註釋來測試覆蓋是否爲真覆蓋。例如:

@Override // always use this annotation just to be sure 
public Foo myMethod(Bar baz) { 
    // ... code in here 
} 

通過使用註釋,在運行代碼之前,您將強制編譯器檢查覆蓋是否爲true。

2

您無法通過更改名稱進行覆蓋。

5

否定義。 覆蓋方法是指在子類中使用相同的簽名實現方法。你的方法有不同的名稱,所以它不能覆蓋第一個方法。