JAVA方法重载

JAVA方法重载

[TOC]

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
33
34
35
36
37
38
39
40
41
public void m1() {
System.out.println("m1()");
};

//参数类型不同重载
public void m1(byte b) {//重载成功
System.out.println("m1(byte)");
};
public void m1(short s) {//重载成功
System.out.println("m1(short)");
};

//形参声明不同重载
public void m1(int i) {//重载成功
System.out.println("m1(int)i");
};
public void m1(int a) {//重载失败
System.out.println("m1(int)a");
}

//返回值不同重载
public int m1() {//重载失败
System.out.println("m1()");
return 1;
};

//参数数量不同重载
public void m1(String str) {//重载成功
System.out.println("m1(String)");
}
public void m1(String str,int i) {//重载成功
System.out.println("m1(String int)");
}

//参数顺序不同重载
public void m1(int a,double d) {//重载成功
System.out.println("m1(int double)");
}
public void m1(double d,int a) {//重载成功
System.out.println("m1(double int)");
}

与返回值类型无关,与访问修饰符无关,与异常无关

注意事项

编译时候,确定要执行的是哪个重载方法

参数不同,执行的重载方法会有差异

执行重载方法,参数匹配原则。

先精确匹配,再向上匹配。(当实参给形参赋值的时候会涉及到类型的自动提升)


  • 若针对上述重载代码块
1
2
3
4
5
6
7
8
9
10
11
12
public void m1() {
System.out.println("m1()");
};
public void m1(byte b) {//重载成功
System.out.println("m1(byte)");
};
public void m1(short s) {//重载成功
System.out.println("m1(short)");
};
public void m1(int i) {//重载成功
System.out.println("m1(int)");
};

执行Main函数方法

1
2
3
byte b = 1;
Object o = new Object();//用Object代替对象声明作为样例
o.m1(b);

实际输出为

1
m1(byte)

当取消方法 public void m1(byte b) 重载时候再次执行将会输出 m1(short) ,发生类型自动提升转换,由 byte 转为 short ;同理继续取消 public void m1(short s) 方法会输出 m1(int)

参数避免类型的混淆


  • 对于下列方法
1
2
3
4
5
6
7
//参数顺序不同重载
public void m1(int a,double d) {//重载成功
System.out.println("m1(int double)");
}
public void m1(double d,int a) {//重载成功
System.out.println("m1(double int)");
}

执行Main方法

1
2
3
4
Object o = new Object();//用Object代替对象声明作为样例
o.m1(1.1, 1);//拟执行 public void m1(double d,int a)
o.m1(1, 1.1);//拟执行 public void m1(int a,double d)
o.m1(1.1, 1.1);//拟测试类型自动转换

则无法运行,java虚拟机无法找到匹配的方法。

对于构造函数的“重载原则”

构造函数除声明特殊外,函数重载规则与上述基础函数重载规则相同。

文章作者: HibisciDai
文章链接: http://hibiscidai.com/2018/08/27/2018-08-27-JAVA方法重载/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HibisciDai