公司企业建设网站,网站建设公司名,域名空间网站推广,常州做网站包括哪些方法重载
为什么需要方法重载
在使用方法的过程中我们可能会遇到以下如同例子的情形#xff1a;
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);do…方法重载
为什么需要方法重载
在使用方法的过程中我们可能会遇到以下如同例子的情形
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 字节码文件名字即可。