第四章 方法重载、可变个数形参
1.方法的重载
①定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
②“两同一不同”:同一个类、相同的方法名;
参数列表不同、参数个数不同、参数类型不同。
③特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
④判断方法是否重载,跟方法的权限修饰符,返回值类型,形参变量名,方法体都没有关系。
⑤在通过对象调用方法时,如何确定某一个指定方法:方法名->参数列表。
package day41;
/**
* @author 26312
*/
public class OverLoadTest {
public static void main(String[] args) {
OverLoadTest test=new OverLoadTest();
test.getSum(1, 2);//1
}
//如下的四个方法构成重载
public void getSum(int i,int j) {//优先选择
System.out.println("1");
}
public void getSum(double d1,double d2) {
System.out.println("2");
}
public void getSum(int i,String s) {
System.out.println("3");
}
public void getSum(String s,int i) {
System.out.println("4");
}
//如下两个方法与方法一重复,默认参数列表相同
//public int getSum(int i,int j) {
// System.out.println(i+j);
//}
//public int getSum(int m,int n) {
// System.out.println(m+n);
//}
}
体会方法的重载,如下:
package day41;
/**
* 1.编写程序,定义三个重载方法并调用。方法名为mOL。三个方法分别接收一个int参数、两个int参数、
* 一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的main ()方法
* 中分别用参数区别调用三个方法。
2.定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,
第三个方法求三个double值中的最大值,并分别调用三个方法。
* @author 26312
*/
public class OverLoadExer {
//1.
public void mOL(int i) {
System.out.println(i*i);
}
public void mOL(int i,int j) {
System.out.println(i*j);
}
public void mOL(String s ) {
System.out.println(s);
}
//2.
public int max(int i,int j) {
return (i>j)?i:j;
}
public double max(double i,double j) {
return (i>j)?i:j;
}
public double max(double i,double j,double k) {
double max=(i>j)?i:j;
return (max>k)?max:k;
}
}
2.可变个数形参的方法:
①JDK 5.0新增内容
②具体使用:
(1)可变个数形参的个数: 数据类型…变量名;
(2)当调用可变个数形参的方法时,传入的形参可以是0个,1个,2个,,,,多个;
(3)可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载;
(4)可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。
(5)可变个数形参在方法的形参中,必须声明在末尾。
(6)可变个数形参在方法的形参中,最多只能声明一个可变形参。
package day41;
/**
* @author 26312
*/
public class MethodArgsTest {
public static void main(String[] args) {
MethodArgsTest test=new MethodArgsTest();
test.show(12);
test.show("hello","world");
}
public void show(int i) {
}
public void show(String s) {
System.out.println("show String");
}
public void show(String ...strs) {
System.out.println("show(String...strs)");
for(int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}
}
//public void show(String strs[]) {
// System.out.println("show(String...strs)");
//}
}