.toString() 如何在数组中重载 class
How is the .toString() overloaded in the Arrays class
我遇到了一个方法不能同时被覆盖和重载的概念。但是当我使用 Arrays.toString() 时,
如果我错了请纠正我,但是 toString() 方法已被同时覆盖和重载。这怎么可能?
当您在子class 中具有完全相同的方法签名时,您正在覆盖。当您有两个具有不同类型或参数数量的相同命名方法时,您正在重载。您可以重写一个方法然后重载它,但是您可以编写一个方法,并且当您重载它时,您最终可能会重写一个超级 class 方法。一件事并不排除另一件事。
让我们有一个像这样的超级class:
public class Super {
public void testMethod() {}
// Overload
public void testMethod(String param) {}
}
然后用子 class 扩展它,如下所示:
public class Sub extends Super {
// Override only
@Override
public void testMethod() {}
// Overload only
public void testMethod(int param) {}
// Overload and Override
@Override
public void testMethod(String param) {}
}
如您所见,您可以通过多种方式仅重载、仅覆盖或两者兼而有之。如前所述,一件事并不排除另一件事。
我遇到了一个方法不能同时被覆盖和重载的概念。但是当我使用 Arrays.toString() 时,
如果我错了请纠正我,但是 toString() 方法已被同时覆盖和重载。这怎么可能?
当您在子class 中具有完全相同的方法签名时,您正在覆盖。当您有两个具有不同类型或参数数量的相同命名方法时,您正在重载。您可以重写一个方法然后重载它,但是您可以编写一个方法,并且当您重载它时,您最终可能会重写一个超级 class 方法。一件事并不排除另一件事。
让我们有一个像这样的超级class:
public class Super {
public void testMethod() {}
// Overload
public void testMethod(String param) {}
}
然后用子 class 扩展它,如下所示:
public class Sub extends Super {
// Override only
@Override
public void testMethod() {}
// Overload only
public void testMethod(int param) {}
// Overload and Override
@Override
public void testMethod(String param) {}
}
如您所见,您可以通过多种方式仅重载、仅覆盖或两者兼而有之。如前所述,一件事并不排除另一件事。