覆盖方法

Aks*_*hah 2 java methods overriding

如果我想覆盖以下方法:

public Machine makeMachine(String machineName, int machineSize)
{
  return new Machine(machineName, machineSize);
}
Run Code Online (Sandbox Code Playgroud)

附:

public Machine makeDramaticMachine(String machineName, int machineSize)
{
  return new DramaticMachine(machineName, machineSize);
}
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

Hov*_*els 6

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

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

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


Ale*_*exR 5

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