Java是如何调用相应重载方法的

来源:互联网 发布:js金沙娱乐注册送58 编辑:程序博客网 时间:2024/06/04 17:59
一个类有多个方法名相同但参数列表不同的方法,这种现象称为方法重载(overload)。其中参数列表不同包括以下情形:
参数的个数不同

—参数的类型不同

那么我们在调用其中一个被重载的方法时,Java是如何去寻找到相应的方法的呢?

我们知道Java中的方法是一个实现某种功能的具体程序段,程序段拥有方法名,入口(参数类表),和出口(返回值类型或者void)。Java通过方法名和参数类表调用相应具体方法。


以下讨论的是如何从一个类中寻找可调用的重载方法(假设Java已经通过对象类型或者类名寻找方法所在类):

第一步,判断方法名:

寻找与调用者调用方法名相同的方法

第二步,判断参数个数:

在第一步基础上,寻找与调用者传入参数个数相同的的方法

第三步,判断参数匹配程度:

在前两步基础上,Java会给所有符合参数类型方法一个匹配值

第四步,调用匹配程度最高的方法


   对于前面两步是非常好理解的,对于第三步很多人在学习Java重载的时候容易忽略,往往认为寻找的是参数列表相同的方法。其实Java是允许数据的自动转型(或上转型),所以传入参数可以是要求参数的子类(对于基本数据类型来说传入参数不大于要求参数范围)

如下:

输出:show1


Java通过参数列表匹配程度调用重载方法,调用匹配度最高的,如下:


如果Java通过传入参数寻找到的匹配程度最高的方法是复数个,则会出现报错,如下:


错误为:

注意,不是因为第四个show方法的重载导致的错误,而是由于传入参数导致如果程序运行,则调用方法含糊不清(当然为避免这种错误Java在编译时即报错)


PS.我是初学者,谢谢大家指教,欢迎一起讨论  O(∩_∩)O~~
















2 0
原创粉丝点击