如果我想覆盖以下方法:
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 :(得分: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)
您无法通过更改名称来覆盖。