java重载

引入

对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。

所以有了方法的重载(Overload)

最常用的重载例子

System.out.println()方法就是一个最好的重载的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 源码
public void println() { /* compiled code */ }

public void println(boolean x) { /* compiled code */ }

public void println(char x) { /* compiled code */ }

public void println(int x) { /* compiled code */ }

public void println(long x) { /* compiled code */ }

public void println(float x) { /* compiled code */ }

public void println(double x) { /* compiled code */ }

public void println(char[] x) { /* compiled code */ }

public void println(java.lang.String x) { /* compiled code */ }

public void println(java.lang.Object x) { /* compiled code */ }

所以几乎所有的类型的数据我们都可以调用println来打印看看

使用重载的条件

方法重载与下列因素相关:

  1. 参数个数不同

  2. 参数类型不同

  3. 参数的多类型顺序不同

方法重载与下列因素无关:

  1. 与参数的名称无关
  2. 与方法的返回值无关

返回值不能作为重载的条件

void f() {}

int f(){return 1;}

只要编译器可以根据语境明确判断出语义,比如在int x = f()中,那么的确可以根据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称“为了副作用而调用”),这时你可能会调用方法而忽略其返回值,所以像

f();

这样的调用方法,这时java如何才能判断该调用哪一个f()呢?别人该如何理解这种代码呢?

所以行不通。 —— 《Java编程思想》


java重载
https://blog.wangxk.cc/2020/08/17/java重载/
作者
Mike
发布于
2020年8月17日
许可协议