java – 使用静态和非静态方法重载的方法

据我所知,在 Java方法重载中,我们对所有重载方法使用相同的名称.而且,他们的回归类型不是问题.但是,如果我们使用与静态和非静态形式相同的方法会发生什么,如下例所示?我们可以考虑这种方法重载吗?

class Adder {

    static int add(int a, int b) {
        return a + b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }

}
class Test {

    public static void main(String[] args) {
        Adder a1 = new Adder();

        System.out.println(Adder.add(11, 11));

        System.out.println(a1.add(11, 11, 51));

    }
}

我读了一些文章,但他们没有澄清我的问题.

最佳答案 使用关键字static不会对方法重载产生影响.

你的代码编译,因为add()方法的方法签名是不同的(2 params vs 3 params).

但是,如果您要编写类似这样的内容,则会导致编译错误.

class Adder {
    static int add(int a, int b) {
        return a + b;
    }

    int add(int a, int b) {
        return a + b;
    }
}
点赞