方法的重载
方法重载的定义
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数或参数的顺序。
- "两同一不同":
- 两同:同一个类、相同方法名。
- 不同:参数个数不同,参数类型不同(参数列表不同)
方法重载的例子
public class OverloadExer {
//如下的三个方法构成重载
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);
}
}
注意:是否构成方法的重载,跟方法的权限防符、返回值类型、形参变量名、方法体都没有关系。
public class OverloadExer {
//不构成方法重载,虽然返回值不一样,但是类一样、方法名一样、参数列表一样,这样不构成方法的重载。
public void mOL(int i){
System.out.println(i * i);
}
public int mOL(int i){
System.out.println(i * i);
}
}
public class OverloadExer {
//不构成方法重载,
public void mOL(int i){
System.out.println(i * i);
}
private void mOL(int j){
System.out.println(j * j);
}
}
可变个数的形参
JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。
可变个数形参的方法 具体使用:
- 1 可变个数形参的格式:数据类型 ... 变量名
- 2 当调用可变个数形参的方法时,传入的参数的个数可以是:0个,1个,2个...
- 3 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载。
- 4 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。即二者不可共存。在新特性之前,java中实现可变参数就是用数组传递。
- 5 可变个数形参在方法中的形参中,必须声明在末尾。
- 6 可变个数形参在方法中的形参中,最多只能声明一个可变形参。
public class MethodArgs {
public static void main(String[] args) {
MethodArgs test = new MethodArgs();
test.show(12);
test.show("a", "b", "c");
}
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){
//
// }
// 可变的参数得放到后面
public void show(int i, String... strs) {
}
}
方法参数的值传递机制(重点)
- 如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
- 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。