Java中的方法重载

来源:互联网 发布:windows的历史 编辑:程序博客网 时间:2024/05/17 04:25

在 同一个类 中,允许存在多个同名方法,只要它们的参数个数或者参数类型不同即可,这就叫方法重载。

格式为:修饰符 返回值类型 方法名(参数类型1 变量名称1,参数类型2 变量名称2,……….)

为什么要用方法重载呢?(以成员方法为例进行说明)

//定义一个求两个int类型数值之和的方法:public int sumInt(int a,int b){};//定义一个求两个double类型数值之和的方法:public double sumDouble(double a,double b){};//定义一个求三个int类型数值之和的方法:public int sumIntThree(int a,int b,int c){};

上面定义方法的格式完成正确,但是从代码易读性简洁性的角度考虑,都是求和用sum来统一命名不是更合理吗?调用方法的时候虽然方法名相同,但是参数类型或参数个数不同,虚拟机仍然可以识别不同的方法,完全不影响程序的正常运行。
所以,相同功能下的代码我们这么写:

public int sum(int a,int b){};public double sum(double a,double b){};public int sum(int a,int b,int c){};

判断是否为方法重载需注意三点:

1、方法重载与返回值类型无关

//定义一个无返回值类型的求和方法public void sum(int a, int b){System.out.println(a+b);}//定义一个返回值为int类型的求和方法public int sum(int a,int b){int  sum = a+b;return sum;}

一个无返回值,一个返回值类型为int,但是对于虚拟机来说两个方法是同一个方法,因为方法调用时是通过类名调用,即sum(a,b),此时就无法判断到底调用的是void类型的sum方法,还是返回值为int类型的方法,此时会出现编译报错。

2、参数类型比较需一一对应,顺序不同即是参数类型不同

public static void sum(int a,double b){};public static void sum(double a,int b){};

第一个方法先传入一个int类型的数值,再传入一个double类型的数值;第二个方法正好相反,所以这两个方法属于参数类型不同,为方法重载。

3、变量名称与方法重载无关

public int sum(int a,int b){};public int sum(int x,int y){};

变量名称a,b,x,y可以为任意符合Java代码规则的标识符,所以以上代码在Java语法规则上是完全相同的两段代码,故不是方法重载。

总结: 我们在判断是否为方法重载时,第一看方法名称,相同再看参数类型和参数个数。

原创粉丝点击