黑马程序员技术交流社区

标题: 方法重载 [打印本页]

作者: 至尊宝的温柔    时间: 2015-10-21 21:38
标题: 方法重载
方法重载需要写两个以上的方法吗

作者: 小小鑫    时间: 2015-10-21 22:07
重载一般是重载已有对象内的方法,自己写两个重载的方法的时候不多,但是也有!
作者: ruoruchujian641    时间: 2015-10-21 22:39
对呀= =如果你只写一个方法,那还叫重载么,但是并不算真正意义上的重载,比如
作者: ruoruchujian641    时间: 2015-10-21 22:43
-(void)test:(int)a;
-(void)test:(float)a;就不可以  方法名是test:   
但是如果
-(void)test:(int)a and:(int)b;
-(void)test:(float)a :(int)b;
就可以  因为一个是test: and:   一个是test: :
作者: FCRandR    时间: 2015-10-21 23:04
方法重载,是在已经有一个方法的前提下再写一个,这个就是重载了。
作者: zhangyunhong66    时间: 2015-10-21 23:46
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。 方法重载是让类以统一的方式处理不同类型数据的一种手段。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法
作者: chengaq0    时间: 2015-10-22 07:20
方法重载是指,方法名相同,参数不同,与返回值无关。只要符合这个标准就是方法重载。如果写一个方法,当前类或子类中找不到与之同名的方法就谈不上重载
作者: minasum    时间: 2015-10-22 12:12
方法名一样,就是参数列表不一样吧?返回值类型可以不同,重载肯定是两个方法以上
作者: 熊志刚    时间: 2015-10-22 12:21
是的  必须要两个
作者: 孤单背影    时间: 2015-10-22 12:33
方法重载是指,方法名相同,参数不同,与返回值无关。只要符合这个标准就是方法重载。如果写一个方法,当前类或子类中找不到与之同名的方法就谈不上重载
作者: zzwzz    时间: 2015-10-22 18:20
方法重载,是重载以有的方法,如果继承了一个类你可以重载那个类里的方法,只要写一个方法就行
作者: 汪冰伦    时间: 2015-10-22 21:21
是的,方法重载是需要大于等于2个同名方法,只要它们的形参的类型或者个数不同,就算是重载
作者: ts930913    时间: 2015-10-22 22:11
可以。
方法重载:在同一个类中,方法名相同,参数列表不同。与返回值无关。
                        参数列表不同:
                        参数的个数不同。
                        参数的对应的数据类型不同。
方法重载案例:
                (不同的类型的多个同名方法的比较。)

class FunctionDemo4 {
        public static void main(String[] args) {
                //jvm会根据不同的参数去调用不同的功能
                System.out.println(sum(10,20));
                System.out.println(sum(10,20,30));
                System.out.println(sum(10,20,30,40));
               
                System.out.println(sum(10.5f,20f));
        }
       
        //需求1:求两个数的和
        public static int sum(int a,int b) {
                System.out.println("int");
                return a + b;
        }
       
        //需求2:求三数的和
        /*
        public static int sum1(int a,int b,int c) {
                return a + b + c;
        }
        */
       
        public static int sum(int a,int b,int c) {
                return a + b + c;
        }
       
        //需求3:求四个数的和
        /*
        public static int sum2(int a,int b,int c,int d) {
                return a + b + c + d;
        }
        */
        public static int sum(int a,int b,int c,int d) {
                return a + b + c + d;
        }
       
        public static float sum(float a,float b) {
                System.out.println("float");
                return a + b;
        }
}


希望对楼主有帮助!!!
作者: 至尊宝的温柔    时间: 2015-10-22 22:56
ruoruchujian641 发表于 2015-10-21 22:39
对呀= =如果你只写一个方法,那还叫重载么,但是并不算真正意义上的重载,比如 ...

恩恩,收到了,谢谢,你是最后的黑马  黑马加油
作者: 至尊宝的温柔    时间: 2015-10-22 22:58
ts930913 发表于 2015-10-22 22:11
可以。
方法重载:在同一个类中,方法名相同,参数列表不同。与返回值无关。
                        参数列表不同:

很有帮助,我试着捋顺代码,今天刚考试了,5
作者: 至尊宝的温柔    时间: 2015-10-22 22:59
小小鑫 发表于 2015-10-21 22:07
重载一般是重载已有对象内的方法,自己写两个重载的方法的时候不多,但是也有! ...

恩恩,在以后应该会学到
作者: 至尊宝的温柔    时间: 2015-10-22 23:01
zzwzz 发表于 2015-10-22 18:20
方法重载,是重载以有的方法,如果继承了一个类你可以重载那个类里的方法,只要写一个方法就行 ...

那个类指什么
作者: 孤单背影    时间: 2015-10-23 11:08
方法重载就是同样的功能,但传递的参数列表不同。这样只需要一个名字就可以了,不需要你记太多的方法名
作者: Pinfan    时间: 2015-10-23 15:04
方法重载是在同一个类中存在两个方法名相同,方法签名不同(参数类型、参数个数、类型排列顺序),只要方法签名不同,在同一个类中是允许多个方法重名,这样的特性叫重载!
作者: 张伟.    时间: 2015-10-23 16:27
要的。。。。
作者: longlostfriend    时间: 2015-10-23 16:41
是啊,问这个问题说明你还不太了解重载是怎么一回事啊。。
比如下面是String的几个构造函数,他们函数名都相同,但是为啥能同时存在呢?是因为他们有不同的参数列表,这样他们就重载了。
String()
String(byte[] bytes)
String(byte[] bytes, Charset charset)
String(byte[] ascii, int hibyte)
String(byte[] bytes, int offset, int length)
String(byte[] bytes, int offset, int length, Charset charset)
总结一下,函数名相同,参数列表不同的函数,就重载。调用的时候,你的参数列表是哪个就调用那个函数。注意的是这里不看返回值。函数名和参数列表都相同而返回值不同的函数是不能在一个类中同时存在的!

作者: 顽固派。    时间: 2015-10-23 17:43
方法重载是一种概念,就是一个类里面存在多个同名方法,但是为了区分他们,每个方法的参数列表是不同的。参数列表不同表现在两个方面,一个是参数的数据类型不同,另一个就是参数的数量不同。最典型的例子就是类的构造器,一个类可以存在多个构造器,但每个构造器的参数列表都是不同的。所以你提问的是否是要有两个方法,那肯定是的,不然怎样表现出其中“重”的概念的呢。与之对应的还有另外一种概念,就是方法的覆写,子类继承父类,可以对继承过来的方法的方法体进行重写,来改善这个方法的功能。
作者: heimacxy2015    时间: 2015-10-24 00:43
方法重载在同一个类中,方法名相同,参数列表不同!!!注意这里说的参数列表不同,因为单个的方法只有一个参数列表无法形成参数列表不同,所以需要两个以上的方法才能形成方法重载
作者: 任珅    时间: 2015-10-24 19:33
肯定的啊,需要用到同一个方法名的时候,当时参数又不相同的情况下,才会出现方法重载的情况。这个时候,方法名都一样,通过方法里定义的参数不同以做区分
作者: 刘彦宗    时间: 2015-10-25 00:10
重载,在一个类中相同名字的方法,通过不同的参数来体现。
作者: 413520953    时间: 2015-10-26 01:37
可以存在同名的方法,但是参数类型和参数不能相同,这样的关系体现了Java中的多态(重载),举例如下:
package com.fatkun;
/**
* Overloading(重载,过载)
* 方法名相同,参数类型不同或者参数类型顺序不同
* 返回值,访问修饰符,异常可以不一样
* @author fatkun
*
*/
public class Overloading {

public int test(){
System.out.println("test1");
return 1;
}

public void test(int a){
System.out.println("test2");
}       

//以下两个参数类型顺序不同
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}       

public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}       

public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test());
o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
作者: 至尊宝的温柔    时间: 2015-10-26 10:39
嗯嗯,方法名相同,参数列表不同,与返回值无关,方法重载
作者: haocds3015    时间: 2015-10-26 14:35
方法重载,是在已经有一个方法的前提下再写一个,方法名相同,元素个数、类型、排列顺序不同才是方法重载,必须要重写一个。所以说方法重载在原有方法的基础上写一个同名但是元素类型不同的也可以称为方法重载
作者: hainanlxk    时间: 2015-10-26 15:38
本帖最后由 hainanlxk 于 2015-10-26 16:13 编辑

重载就是同方法名称需要不同的参数来达到一定的功能,重载不一定是必须的。比如:zuofan(String 大米){
   .......做饭;
}
zuofan(String 大米,int 5个人){
   ......做5个人的饭;
}
这样能明白我的意思吧。

作者: 顽固派。    时间: 2015-10-26 18:33
方法重载是java的一种机制,一般跟方法的覆写在一起比较学习。方法的重载是指一个类中存在多个重名方法,但是方法的参数列表不同。参数的列表不同表现在两个方面,一个是参数的个数不同,另一个就是参数的数据类型不同。
作者: HiGodl    时间: 2015-10-27 01:37
当然要,重载的定义就是建立在多个同名但参数不同的方法基础之上的,如果只有一个方法的话,何来重载之说
作者: 至尊宝的温柔    时间: 2015-10-27 21:13
嗯嗯,谢谢了,
作者: myworkspace    时间: 2015-10-27 22:28
同一个类中,方法名一样参,数列表不一样构成方法重载,你至少要有两个方法吧...
作者: ll5353231    时间: 2015-10-28 00:34
方法重载是指,方法名相同,参数不同,与返回值无关。只要符合这个标准就是方法重载。如果写一个方法,当前类或子类中找不到与之同名的方法就谈不上重载
作者: 大自然的搬运工    时间: 2015-10-28 00:49
重载,,重就值得至少还要有一个
作者: guoguo291    时间: 2015-10-28 13:09
方法重载是之指在同一个类中,两个或多个方法的名字相同,但是方法的参数列表不同(参数的个数或者参数数据类型,不同类型参数的顺序不同)就是方法重载,与方法的返回值类型无关
作者: 一封信的旅途    时间: 2015-10-28 16:05
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
写两个以上的方法,才能看出是重载啊。{:2_30:}
作者: aaa4332571    时间: 2015-10-29 00:49
当然需要了。肯定需要了啊
作者: aaa4332571    时间: 2015-10-29 00:50
当然需要重载了,
作者: 杨露露老师    时间: 2015-10-29 00:50
是的  必须要两个
作者: 月明    时间: 2015-10-29 00:50
是 在同一类中 按照需求来写  返回值类型和参数列表可以不同 需求几个不同的方法就写几个
作者: 留半本    时间: 2015-10-29 19:05
方法重载是同一个类中,两个或多个方法名相同参数列表不同。所以需要两个以上
作者: zhangdazhi186    时间: 2015-10-29 22:23
方法重载就是同一个方法名,但它具备有不同参数的个数,如果不是两个以上的方法,那也没必要使用方法重载,只建立一个方法实现需求功能即可。
作者: 陈威    时间: 2015-10-31 23:28
方法的重载:
当方法名相同时,参数个数不同,是合法的,那么调用时,会根据参数调用相应的方法。
这就称之为方法的重载
在java中,如何区分方法的调用---根据两点:1、方法名 2、参数列表

注意:重载只和方法名和参数列表有关

什么情况下重载:
1、方法名相同
2、参数列表不同
  A、列数的个数不同
  B、参数的类型不同

如果两个方法的方法名相同,参数列表相同,只有声明的数据类型不同(返回值类型)
这时编译器会报错。不会构成重载。如下
public static int getMax(byte num1,byte num2){

}
public static byte getMax(byte num1,byte num2){

}这时不会是重载  编译器会报错  无法区分两个方法。
public变化时 也不会构成重载
java语法规范:重载只能由方法名和参数列表区分;权限修饰符、static、返回值声明的类型无关。

重载的特点:
查找方法时,根据输入的数据数据类型,按照最符合进行执行,如果有就执行。
如果没有,再向上转型进行匹配。
结果上看:执行参数的数据类型和数据最为相近的那个方法。
当然要有两个方法名相同,参数列表不同的方法
作者: 刻骨铭心    时间: 2015-11-1 10:42
参数列表不一样吧
作者: 特立独行    时间: 2015-11-2 21:09
学习了~
作者: zhengsx    时间: 2015-11-4 22:16
因果关系弄反了。是应为有两个或以上的功能呢相同的方法在同一个类中,为了避免取名困难所以java提供了重载这种形式。
作者: 至尊宝的温柔    时间: 2015-11-4 22:52
恩恩,好的

作者: ok2784488    时间: 2015-11-5 10:31
简单来说重载就是方法的名称相同,参数列表不同(括号里的内容),那必须是要两个以上方法才可以相同名称。注意就算返回值类型不一样,也可以重载。重载看的是参数列表,参数列表如果一样,那么就是一样的函数,那就不是重载了;;;注意而如果名称相同,参数列表一样但是返回值类型不同,这种情况是不允许出现的,
作者: 744919632    时间: 2015-11-6 09:00
方法重载:
                在同一个类中,方法名相同,参数列表不同。与返回值无关。
               
                参数列表不同:
                        参数的个数不同。
                        参数的对应的数据类型不同。
作者: HavaDream    时间: 2015-11-7 22:43
方法重载:在同一个类中,方法名相同,参数列表不同(1、参数个数不同 2、对应的参数类型不同);方法两个以上
作者: houxiaolu1989    时间: 2015-11-8 00:40
既然是重载那么肯定有两个以上的同名方法才可以的啊
作者: 帮助信息    时间: 2015-11-9 23:23
父类一个子类一个。来蹭蹭蹭
作者: chenxianzai    时间: 2015-11-10 20:07
两个或多个同名的方法可以构成重载,只写一个的话叫定义方法
作者: 萧未然    时间: 2015-11-11 18:13
重载看方法参数,覆盖除了权限外其他必须一模一样,他们都是发生在方法的形式比较之上的,必须要有两个以上方法咯,希望有帮助哈。。。
作者: zhauibuzhai    时间: 2015-11-15 23:49
肯定是  同个类里只有一个方法也不可能会存在重载,
作者: ^_^笨和尚^_^    时间: 2015-11-16 00:21
既然叫重载,有这个重字存在,就说明 在这个类中,有两个以上同作用的方法。
朋友请赏分。。
作者: 袁有福123    时间: 2015-11-19 21:39
在这里我们要着重区分方法重载和方法重写的区别  重载的话 是在写这个方法 但是方法的参数数量 以及类型不一样 而重写的话 就是完全重写这个方法 方法名参数数量类型都一致!
作者: liuqiang11164    时间: 2015-11-20 13:55
恩,两个以上(包含两个)参数不一样,名字相同与返回值无关的方法。多注意下跟重写的区别。
作者: 隔壁马良    时间: 2015-11-23 00:26
方法名相同参数列表不同的两个以上的方法
作者: sunpeijie    时间: 2015-12-20 14:41
进来看看真的能学到好多东西
作者: 平凡D世界    时间: 2015-12-24 23:20
所谓重载,定义中讲明是两个方法名相同,参数列表不同(包括参数数据类型,顺序,个数)与返回值类型无关,你只写一个让他和谁来构成重载,希望能够帮你解决问题
作者: xiaotvsit    时间: 2016-3-2 23:32
只有一个方法不叫做重载,多个同名方法并且参数类型,个数,顺序不一致时才叫方法的重载
例如:
public int add(int a,int b) {逻辑} //两个数加法
public int add(int a,int b,int c) {逻辑} //三个数加法
public int add(int a,int b,int c,int d) {逻辑} //四个数加法




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