JAVA 方法的重载
方法重载
java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致
重载的好处
- 减轻了起名的麻烦
- 减轻了记名的麻烦
重载的注意事项
-
方法名:必须相同
-
形参列表:必须不同
-
形参类型或个数,或顺序,必须有一个不一样,参数名无要求
public void calculate(int n1,int n2) { int ret =n1+n2; System.out.println("有两个整数形参的calculate被调用"); System.out.println(n1+ "+" + n2 +"=" + ret); } // 以下没有构成重载,而是方法的重复定义 // public void calculate(int a,int n2) { // double ret =n1+n2; // System.out.println(n1+ "+" + n2 +"=" + ret); // }
-
-
返回类型:无要求
public void calculate(int n1,int n2) { int ret =n1+n2; System.out.println("有两个整数形参的calculate被调用"); System.out.println(n1+ "+" + n2 +"=" + ret); } // 以下没有构成重载,而是方法的重复定义,改变返回值类型, // 并没有作用到判断到底调用那个方法 // public intvoid calculate(int a,int b) { // int ret =n1+n2; // return ret; // }
重载练习
题目:
编写程序,类 Methods 中定义三个重载方法并调用。方法名为 m。 三个方法分别接收一个 int 参数、两个 int 参数、一个字符串参数。分别执行平方运算并输出结果, 相乘并输出结果,输出字符串信息。在主类的 main ()方法中分别用参数区别调用三个方法
package Object_Practice;
public class OverLoadExercise {
public static void main(String[] args) {
Method method = new Method();
method.m(2);//4
method.m(2,3);//6
method.m("我真的很不错");
}
}
class Method{
public void m(int num) {
int ret =num * num;
System.out.println(num+"的平方="+ret);
}
public void m(int num1, int num2) {
int ret = num1 * num2;
System.out.println(num1+ "*"+ num2 + "=" + ret);
}
public void m(String str) {
System.out.println("传入是String"+str);
}
}
题目:
定义三个重载方法 max(),第一个方法,返回两个 int 值中的最大值,第二个方法,返回两个 double 值中的最大值,第三个方法返回三个 double 值中的最大值,并分别调用三个方法
package Object_Practice;
public class OverLoadExercise {
public static void main(String[] args) {
/*
* 重载练习1,进行计算
*/
System.out.println("重载练习题一");
Method method = new Method();
method.m(2);//4
method.m(2,3);//6
method.m("我真的很不错");
System.out.println("=========");
System.out.println("重载练习题二");
/*
* 重载练习2
*/
System.out.println("max=" + method.max(10, 20) );
System.out.println("max=" + method.max(1.1, 2.2));
System.out.println("max=" + method.max(1.1, 2.2,3.3));
}
}
class Method{
/*
* 重载练习1
*/
public void m(int num) {
int ret =num * num;
System.out.println(num+"的平方="+ret);
}
public void m(int num1, int num2) {
int ret = num1 * num2;
System.out.println(num1+ "*"+ num2 + "=" + ret);
}
public void m(String str) {
System.out.println("传入是String"+str);
}
/*
* 重载练习2
* 返回最大值
*/
public int max(int num1 , int num2) {
return num1 > num2? num1:num2;
}
public double max(double num1 , double num2) {
return num1 > num2? num1:num2;
}
public double max(double num1 , double num2,double num3) {
double max = num1 > num2? num1:num2;
return max>num3 ? max:num3;
}
}
注意
- 方法重载,优先匹配不需要强制转换的重载方法