Java中的方法重载

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

格式为:修饰符 返回值类型 方法名(参数类型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语法规则上是完全相同的两段代码,故不是方法重载。

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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值