java overloading_Java方法重载(Method Overloading)小记

方法重载概念

如果在同一个类中,两个或多个方法的参数不同(参数数量不同、参数类型不同或两者都不同),并且它们具有相同的名称,这些方法称为重载方法,这一特性称为方法重载(Method Overloading)。

要点说明

要在同一个类中 (在不同的类中不算

要有两个或多个方法 (只有一个方法也构不成方法重载

方法名称相同 (方法名称不同的也不算

参数不同 (包括参数数量不同或者是参数类型不同,也可以两个都不同

举个例子

class MethodDemo {

void func() { ... }

void func(int a) { ... }

float func(double a) { ... }

float func(int a, float b) { ... }

int func(float a) { ... }

int func(int a, int b, int c, int d) { ... }

}

在这个例子中,func()是重载方法,这些方法具有相同的名称,但具有不同的参数。

强调一点

方法重载与返回值类型没有关系,虽然在上面例子中这方法返回值类型有float有int,但是方法重载与返回值类型没有任何关联。

方法重载可能具有相同或不同的返回类型,但它们的()里参数必须不同。

错误案例

// 错误案例1

class MethodDemo {

void func(int a) { ... }

int func(int a) { ... }

}

// 错误原因:重载与返回值类型无关

// 错误案例2

class MethodDog {

void func(int a) { ... }

}

class MethodCat {

int func(double a) { ... }

}

// 错误原因:不在同一个类中

通常情况下,这错误案例1这返回值类型是最容易让人出错的地方,你可以站在计算机的角度来辨别这是不是重载方法。

比如以最上面那个正确例子中,

我这边要是拿到一个func(2.6)的方法,根据参数类型,显然他走的是float func(double a) { ... }这个方法;

我这边如果拿到一个func(8)的方法,根据参数类型,显然他走的是func(int a) { ... }这个方法;

我这边再拿到一个func(100, 78.5f),根据参数个数,显然他走的是float func(int a, float b) { ... }这个方法;

在错误案例1中,

我这边如果是拿到一个func(666)的方法,从参数类型和参数个数来判断,我无法判断出他应该走哪个方法,因此这个就不是方法重载。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值