一、区分重载方法:

参数列表不同,具体而言,可以是:

(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