9.1 概念
方法重载:在同一类中,允许存在多个同名方法,只要它们的参数个数或参数类型不同即可。
9.2 特点
和返回值类型无关,只看参数列表,且参数列表必须不同(参数个数或参数类型)。
调用的时候,根据方法参数列表的不同来区别。
9.3 应用示例
示例:
package com.github.overload;
/**
* @author maxiaoke.com
* @version 1.0
*/
public class Array {
/**
* 返回两个整数的和
*
* @param num1 num1
* @param num2 num2
* @return int
*/
public int add(int num1, int num2) {
return num1 + num2;
}
/**
* 返回三个整数的和
*
* @param num1 num1
* @param num2 num2
* @param num3 num3
* @return int
*/
public int add(int num1, int num2, int num3) {
return num1 + num2 + num3;
}
/**
* 返回两个小数的和
*
* @param num1 num1
* @param num2 num2
* @return double
*/
public double add(double num1, double num2) {
return num1 + num2;
}
}
9.4 方法重载的好处
public void print(boolean b){}
public void print(char c){}
public void print(int i){}
public void print(long l){}
public void print(float f){}
public void print(double d){}
public void print(char s[]){}
public void print(String s){}
public void print(Object obj){}
public void println(){}
public void println(boolean x){}
public void println(char x){}
...
9.5 练习
9.5.1 练习1
② 在主类的 main 方法中分别用参数区别调用三个方法。
示例:
package com.github.overload.exec;
/**
* @author maxiaoke.com
* @version 1.0
*/
public class OverloadDemo1 {
/**
* 执行平方运算并输出结果
*
* @param num
*/
public void mOverload(int num) {
System.out.println((int) Math.pow(num, 2));
}
/**
* 乘法运算并输出结果
*
* @param num1
* @param num2
*/
public void mOverload(int num1, int num2) {
System.out.println(num1 * num2);
}
/**
* 输出字符串信息
*
* @param str str
*/
public void mOverload(String str) {
System.out.println(str);
}
}
package com.github.overload.exec;
/**
* @author maxiaoke.com
* @version 1.0
*/
public class OverloadDemo1Test {
public static void main(String[] args) {
OverloadDemo1 overloadDemo1 = new OverloadDemo1();
overloadDemo1.mOverload(1);
overloadDemo1.mOverload(1, 2);
overloadDemo1.mOverload("你好,世界");
}
}
9.5.2 练习2
定义三个重载方法 max() ,第一个方法求两个 int 值中的最大值,第二个方法求两个 double 值中的最大值,第三个方法求三个 double 值中的最大值,并分别调用这三个方法。
示例:
package com.github.overload.exec;
/**
* @author maxiaoke.com
* @version 1.0
*/
public class ArrayDemo {
/**
* 求两个int值的最大值
*
* @param num1 num1
* @param num2 num2
* @return int
*/
public int max(int num1, int num2) {
return num1 > num2 ? num1 : num2;
}
/**
* 求两个double值的最大值
*
* @param num1 num1
* @param num2 num2
* @return double
*/
public double max(double num1, double num2) {
return num1 > num2 ? num1 : num2;
}
/**
* 求三个double值的最大值
*
* @param num1 num1
* @param num2 num2
* @param num3 num3
* @return double
*/
public double max(double num1, double num2, double num3) {
return num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
}
}
package com.github.overload.exec;
/**
* @author maxiaoke.com
* @version 1.0
*/
public class ArrayDemoTest {
public static void main(String[] args) {
ArrayDemo demo = new ArrayDemo();
int max = demo.max(1, 2);
System.out.println("max = " + max);
double max1 = demo.max(1.1, 2.2);
System.out.println("max1 = " + max1);
double max2 = demo.max(1.1, 1.2, 1.3);
System.out.println("max2 = " + max2);
}
}