覆盖方法

时间:2012-02-19 13:20:17

标签: java methods override

如果我想覆盖以下方法:

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

使用:

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

这是正确的吗?

3 个答案:

答案 0 :(得分:6)

不,不会因为你改变了方法“签名”。方法名称及其参数列表必须保持不变,才能成为真正的覆盖。始终使用@Override注释来测试覆盖是否为真正的覆盖。 e.g:

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

通过使用注释,您将强制编译器在运行代码之前检查覆盖是否为真。

答案 1 :(得分:5)

根据定义没有。 覆盖方法意味着在子类中实现具有相同签名的方法。您的方法具有不同的名称,因此它不能覆盖第一个方法。

答案 2 :(得分:2)

您无法通过更改名称来覆盖。