java-面向对象-类的成员-方法

171 阅读2分钟

方法的重载

方法重载的定义

方法重载是指在一个中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数或参数的顺序

  • "两同一不同":
    • 两同:同一个类、相同方法名。
    • 不同:参数个数不同,参数类型不同(参数列表不同)

方法重载的例子

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) {
	}
}

方法参数的值传递机制(重点)

  • 如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
  • 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。