Java中的重载

重载

函数重载(Function overloading),是Ada、C++、C#、D和Java等编程语言中具有的一项特性,这项特性允许创建数项名称相同但功能的输入输出类型不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力。
这是维基百科给出的解释,那么什么是重载(overload),重写(override)又是什么?重载、重写和多态(编译时多态和运行时多态)又有什么关系呢?鉴于这些问题比较复杂,笔者能力有限,所以都不做介绍,大家可以查阅其他资料。
本文主要讲解关于重载的一个问题。 现在两个方法的形参不同(已经满足了重载条件),那么Java中是否允许其返回值不同呢?
大家应该都知道在Java中不允许方法返回值重载(即方法形参完全相同,返回值不同),那么刚才这个问题的答案到底是什么呢?

以下代码会给出答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class OverloadTest {

public static void main(String[] args) {
OverloadTest overloadTest = new OverloadTest();

overloadTest.test();
overloadTest.test(10);
overloadTest.test("hello!");
}

public void test() {
System.out.println("test");
}

public void test(int i) {
System.out.println("test(int i):" + i);
}

public int test(String s) {
System.out.println("test(String s):" + s);
return 20;
}

}


运行结果:

test
test(int i):10
test(String s):hello!