定义:
如果一个类中有多个具有相同名称但参数不同的方法,则称为方法重载。
方法重载的作用:
提高代码的可读性。
如果不进行重载,倘若要实现相加的操作,add(int num1,int num2)方法是实现两个数相加,这时候要实现三个数相加必须更改方法名,例如,add1(int num1,int num2,int num3).
重载的方法:
1.更改参数的个数。
2.改变参数的类型。
package com.zhy.rechange; public class Rewrite { public double add(int num1,int num2){ return num1+num2; } public double add(int num1,int num2,int num3){ return num1+num2+num3; } public double add(int num1,double num2){ return num1+num2; } } class test{ public static void main(String[] args) { Rewrite r = new Rewrite(); System.out.println(r.add(1,2)); System.out.println(r.add(1,2,3)); System.out.println(r.add(1,3.0)); } } //输出结果 3.0 6.0 4.0
注意:
返回值类型不同,不属于方法重载。
package com.zhy.rechange; public class Rewrite { public double add(int num1,int num2){ return num1+num2; } public int add(int num1,int num2){ return num1+num2; } } class test{ public static void main(String[] args) { Rewrite r = new Rewrite(); System.out.println(r.add(1,2)); } }
上面这份代码会报错,因为当main方法跑起来时,他并不知道调用的add方法是int add(){}还是double add(){}。
类型转换
下面提供一份代码
package com.zhy.rechange; public class Rewrite { public double add(double num1,double num2){ return num1+num2; } } class test{ public static void main(String[] args) { Rewrite r = new Rewrite(); System.out.println(r.add(1,2)); } }
在Rewrite这个类中定义了一个参数是double型的add方法,然而在测试类中r调用这个方法时里面的参数类型是int型,他们并不对应。
但是,这份代码是能跑起来的,为什么?
当数据类型不要匹配是,他会把参数类型提升等级去查找方法。在这份代码中i他就把4字节的int型的num1,num2提升为8字节的double型,然后去调用这个add方法。它的结果是3.0。
但是它只能向上转换,而不能向下转
package com.zhy.rechange; public class Rewrite { public double add(int num1,int num2){ return num1+num2; } } class test{ public static void main(String[] args) { Rewrite r = new Rewrite(); System.out.println(r.add(1.0,2.0)); } }
上面这份代码因为double转成int时会有精度损失,所以他会报错,不让你跑。