黑马程序员技术交流社区

标题: 关于重载,请问下面这几个都算是重载么? [打印本页]

作者: 张学永    时间: 2012-11-14 08:21
标题: 关于重载,请问下面这几个都算是重载么?
本帖最后由 张学永 于 2012-11-14 09:15 编辑

毕老师讲的是功能相同,参数列表不同。貌似和返回值没关系?
下面这种写法,功能有的也不同,该如何定义呢?能否算是重载呢?
class MyTest{
   
    public int function(int a,int b){
        return a+b;
    }
    public int function(int a,int b,int c){
        return a+b+c;
    }
    public Double function(String a){
        return Double.parseDouble(a);
    }
    public void function(){
        System.out.println("hello");
    }
   
}

作者: 王震阳老师    时间: 2012-11-14 08:28
算是重载的。
作者: 刘菲    时间: 2012-11-14 08:46
1.以上几个算是重载,再是在定义函数名时有些笼统。
2.函数重载的定义:在同一类中允许存在一个以上的同名函数,只是他们的参数列表不同(即参数个数和参数类型不同)。
3.什么时候用重载?
  当定义的功能相同时,但参与运算的位置内容不同时,就定义一个函数名称表示其功能,方便阅读,而通过参数列表的不同来区分不同函数。
4.这只是本人的理解,希望可以帮到楼主。
  
作者: 陈龙    时间: 2012-11-14 09:10
方法的重载就是方法名称相同,但参数的类型和参数的个数不同,上面的几位同学说的比较清楚了,我这想说的是,方法的返回类型不同,但是参数类型和个数相同不是重载,比如:
public static float add(int x,int y)
{
}

public static int add (int x,int y)
{
}

这两个方法不叫重载,也不可能编译通过,希望对你有所帮助

作者: 黑马郑毅雄    时间: 2012-11-14 09:19
楼上的那个例子不能同时存在一个类中,我一直以为参数类表没有位置问题,原来参数类表也有前后顺序,希望有同样想法的同学注意了
作者: 化小东    时间: 2012-11-14 09:20
楼主所列的都是重载
只要理解了重载的定义(在一个类中,可以允许存在多个同名函数,只要它们的参数个数或者参数类型不同即可),
就容易判断了
作者: 郑丹丹    时间: 2012-11-14 10:14
是重载。重载和返回值没有关系。
重载:在同一个类中,允许出现一个以上的同名函数,只要他们的参数个数或参数类型不同即可。所以你在考虑是不是重载时,只要考虑他们之间的参数个数或参数类型是不是就可以了。
函数的格式:修饰符   返回值类型   函数名(参数类型  形式参数1   参数类型  形式参数2.......)
作者: 刘腾    时间: 2012-11-14 10:47
以上都属于重载。
重载很好理解:在同一个类中,允许一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
记住一点:重载跟返回值类型与修饰符无关
至于什么时候用重载也很好理解。
当定义的功能一样时,而参与运算的内容不同时,那么,就定义一个函数名称以说明其功能,方便阅读,而通过参数列表的不同来区分多个函数。
作者: 一身顺利    时间: 2012-11-14 11:14
都是的。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
重载只看方法名和方法参数的。
作者: 陈军    时间: 2012-11-14 12:45
本帖最后由 陈军 于 2012-11-14 12:48 编辑

你这个int型的简单。用一个可变参数就搞定了。

例子如下
public static int add(int...args){ }

这个方法表示接收int类型的可变参数。。个数可以是任意个数(包括0)

你的这个也叫重载,因为参数列表不一样。。
反正重载你记住一点: 名字相同,不同参数列表(包括类型和顺序)

和返回值没有任何关系。





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