黑马程序员技术交流社区

标题: 重载的参数问题 [打印本页]

作者: 丁青松    时间: 2012-1-13 21:02
标题: 重载的参数问题
void f(char x){
}
void f(int x){
}
void f(long x){
}
2个方法,当我们传入char x = ‘x’时,会出现什么情况?请再分析下原因。如果此时定义int x =5,或long x =5,会出现什么情况?
作者: 宋双    时间: 2012-1-13 21:13
传入对应类型的数据,就会调用对应类型的方法。
如你传入char类型的数据,就会调用参数类型为char的那个方法,而传入int类型的数据时,就会调用参数类型为int型的方法。
作者: 丁青松    时间: 2012-1-13 21:23
宋双 发表于 2012-1-13 21:13
传入对应类型的数据,就会调用对应类型的方法。
如你传入char类型的数据,就会调用参数类型为char的那个方 ...

我只是偶尔想到这会不会和类型转换有关系。。。。
作者: 张振宁    时间: 2012-1-14 00:02
本帖最后由 Simple 于 2012-1-14 00:08 编辑

重载就是一个方法名,但传入的参数不同。
方法1:void f(char x){}
方法2:void f(int x){}
方法3:void f(long x){}
你给出的三个方法,当调用f方法时,传入的参数是char就调用方法1。
传入int就调用方法2.  传入long 就调用方法3, 与类型转换无关、

f(8);               //int型
f((long)8.0f);  //long型
f((char)97);    //char型
作者: 李建平    时间: 2012-1-14 09:10
public class Test2 {
        public static void main(String[] args) {
                f(5);
                f('a');
                f("a");
                f(2.5);
        }
        public static void f(Integer a){
                System.out.println(a.getClass());
        }
        public static void f(Character a){
                System.out.println(a.getClass());
        }
        public static void f(String a){
                System.out.println(a.getClass());
        }
        public static void f(Double a){
                System.out.println(a.getClass());
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2