java - 静态和非静态方法的方法重载

标签 java overloading

据我所知,在 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 个参数与 3 个参数)。

但是,如果您要编写这样的代码,那么它会导致编译错误

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

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

关于java - 静态和非静态方法的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024807/

相关文章:

java - 直接调用方法 vs 方法重载

c++ - 转换构造函数不会将 "2"转换为运算符 + 中的用户定义类型

java - 该方法对于错误类型不明确

java - 使用首选项 MenuItem SWT

java - 我如何在工具栏的图标和标题之间设置空格

c++ - 常量/非常量重载解析的问题

java - 不同形式的方法重载

java - 定义新变量

java - 面向流的 IO 与面向 block 的 IO

java - Hibernate saveorupdate 或 merge 用于保存/更新一对多关系对象