Java:方法的重载
方法重载
为什么需要方法重载
在使用方法的过程中我们可能会遇到以下如同例子的情形:
-
-
-
public class method1 {
-
public static void main(String[] args) {
-
int a1 = 10;
-
int b1 = 20;
-
double ret1 = add(a1, b1);
-
System.out.println("ret1 = " ret1);
-
-
double a2 = 10.0;
-
double b2 = 20.0;
-
int ret2 = add(a2, b2);
-
System.out.println("ret2 = " ret2);
-
}
-
-
public static int add(int x, int y) {
-
return x y;
-
}
-
}
-
-
-
-
在计算ret1时我们可以很容易得到结果,但在计算ret2时由于double转换到参数的int会有损失而报错,这里我们一般是再另外写一个方法,然后给两个方法起不同的名字:
-
public class method2 {
-
public static void main(String[] args) {
-
int a1 = 10;
-
int b1 = 20;
-
int ret1 = addInt(a1, b1);
-
System.out.println("ret1 = " ret1);
-
-
double a2 = 10.0;
-
double b2 = 20.0;
-
double ret2 = addDouble(a2, b2);
-
System.out.println("ret2 = " ret2);
-
}
-
-
public static int addInt(int x, int y) {
-
return x y;
-
}
-
-
public static double addDouble(double x, double y) {
-
return x y;
-
}
-
}
-
-
这样做我们说确实能解决问题,但不友好的地方是:我们需要提供不同的方法名,如果方法一旦变多,给方法起名字显得非常地木乱,那是否能将这里所有表示相加的方法都命名为add呢?可以,这就涉及到了java的方法重载。
方法重载的概念
在自然语言中,一个词语如果有多重含义(就类似文言文的一词多义),那么就是说该词语被重载了,具体代表什么含义需要结合具体的场景。
在Java中如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
举个栗子:
-
public class method3 {
-
public static void main(String[] args) {
-
add(2,3);
-
add(2,3,4);
-
add(2.0, 3.0);
-
}
-
-
public static int add(int x, int y) {
-
return x y;
-
}
-
-
public static int add(int x, int y, int z) {
-
return x y z;
-
}
-
-
public static double add(double x, double y) {
-
return x y;
-
}
-
}
注意:1.方法名必须相同
2.参数列表必须不同(参数的个数不同,参数的类型不同,参数的顺序不同)。
3.与方法的返回类型无关(仅仅因为返回类型不同是无法构成重载的)
4.无需关心怎么选择调用哪个方法,编译器在编译的时候,会对实参进行推演,根据推演的结果来确定调用哪个方法。
方法签名
在同一个作用域中不能定义两个名字相同的变量,但为什么在同一个类中,能够使用相同名字的方法呢?这就用到了方法签名。
方法签名即:经过编译器修改过之后得到最终的名字。具体方式:方法路径名 参数列表 返回值类型,构成方法完整的名字。
如何查看呢?还是以上面的代码为例:
-
public class method3 {
-
public static void main(String[] args) {
-
add(2,3);
-
add(2,3,4);
-
add(2.0, 3.0);
-
}
-
-
public static int add(int x, int y) {
-
return x y;
-
}
-
-
public static int add(int x, int y, int z) {
-
return x y z;
-
}
-
-
public static double add(double x, double y) {
-
return x y;
-
}
-
}
上述代码经过编译之后,然后使用JDK自带的javap反汇编工具查看,具体操作(可用cmd窗口):
1.先对工程进行编译生成.class字节码文件。
2.在控制台中进入到要查看的.class所在的目录
3.输入javap -v 字节码文件名字即可。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfikeai
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01