一、区分重载方法:
参数列表不同,具体而言,可以是:
(1)参数顺序的不同
(2)参数类型不同
(3)参数个数
不能够通过返回值来区分重载,例如:
[java] view plain copy
1. void f(){}
2. int f(){return 1;}
3. //调用
4. f();
如此调用,其实是没法分清到底是哪个f的 ,
因为我们有时候不关心到底有没有返回值
二、调用重载函数:
(1)找类型匹配的
(2)在类型不匹配的情况下,找类型大于传入的类型而且最接近的。
[java] view plain copy
1. package com.learn.java;
2.
3. public class MyOverride {
4. void f(char c){
5. "Char " + c);
6. }
7. /*void f(int m){
8. System.out.println("Int " + m);
9. }*/
10. void f(long l){
11. "Long " + l);
12. }
13. public static void main(String[] args) {
14. // TODO Auto-generated method stub
15. int t = 65;
16. new MyOverride();
17. over.f(t);
18. }
19. }
输出:Long 65
(3)在类型不匹配的情况下,自己强制转换,
[java] view plain copy
1. package com.learn.java;
2.
3. public class MyOverride {
4. void f(char c){
5. "Char " + c);
6. }
7. /*void f(int m){
8. System.out.println("Int " + m);
9. }*/
10. void f(long l){
11. "Long " + l);
12. }
13. public static void main(String[] args) {
14. // TODO Auto-generated method stub
15. int t = 65;
16. new MyOverride();
17. char)t);
18. }
19. }
输出结果:Char A