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
- Java是如何调用相应重载方法的
- Java中的syso方法是如何调用toString()方法的
- 求教:请问Android中,权限的实现与相应API的调用是如何实现的
- Java之方法重载篇(我重载了,你要如何来调用我。。)
- 重载是如何实现的?
- Java之调用被子类重载的方法
- java 重载 多个方法的调用顺序
- Java中方法的传值、重载、递归调用
- java动态代理中的invoke方法是如何被自动调用的
- java动态代理中的invoke方法是如何被自动调用的
- java动态代理中的invoke方法是如何被自动调用的
- java动态代理中的invoke方法是如何被自动调用的
- java方法的重载
- java 方法的重载
- JAVA 方法的重载
- java 方法的重载
- Java方法的重载
- Java的方法重载
- java基础巩固----泛型
- NOIP2016提高组day1 换教室
- C/C++ 素数和逆素数的求解。。
- Java 1.8数组转换为List
- Express入门
- Java是如何调用相应重载方法的
- 使用Java的反射简单的实现ORM框架(五)
- java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别
- php加密解密算法2
- 最小生成树算法之prim算法
- QT中实现开机动画
- jira scriptRunner 脚本分配经办人
- html转义字符
- 获取安卓手机中APP包名的几种方式