.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) {}
}

如您所见,您可以通过多种方式仅重载、仅覆盖或两者兼而有之。如前所述,一件事并不排除另一件事。