2012-02-19 422 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

否定义。 覆盖方法是指在子类中使用相同的签名实现方法。你的方法有不同的名称,所以它不能覆盖第一个方法。