java方法重载(overload)

1.方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法,调用时,会根据不同的参数自动匹配对应的方法。
2.重载的方法,实际上是完全不同的方法,只不过是名称相同而已
3.构成方法重载的条件:
a.不同的含义:形参类型、形参个数、形参顺序不同
b.只有返回值不同不构成方法的重载
如:

int a(String str) {} 与 void a(String str) {}

不构成方法的重载

例子

1.构成重载

public class TestOverload{
	public static void main(String[] args) {
        System.out.println(add(1, 5, 6));//12
		System.out.println(add(12.0, 5));//17.0
		System.out.println(add(4, 5.4));//9.4
	}
	/**求和方法*/
	public static int add(int n1, int n2){
		int sum = n1 + n2;
		return sum;
	}
	//方法名相同,参数个数不同, 构成重载
	public static int add(int n1, int n2, int n3) {
		int sum = n1 + n2;
		return sum;
	}
	//方法名相同,参数类型不同, 构成重载
	public static int add(double n1, int n2) {
		int sum = n1 + n2;
		return sum;
	}
	//方法名相同,参数顺序不同, 构成重载
	public static int add(int n1, double n2) {
		int sum = n1 + n2;
		return sum;
	}
}

2.不构成重载

public class TestOverload{
	public static void main(String[] args) {
		//报错
        System.out.println(add(1, 5));
		System.out.println(add(12.0, 5));
		System.out.println(add(4, 5.4));
	}
	/**求和方法*/
	public static int add(int n1, int n2){
		int sum = n1 + n2;
		return sum;
	}
	//编译错误,只有返回值不同,不构成方法重载
	public static double add(int n1, int n2) {
		int sum = n1 + n2;
		return sum;
	}
	//编译错误,只有参数名称不同,不构成方法重载
	public static int add(int m1, int m2) {
		int sum = n1 + n2;
		return sum;
	}

}

重载的作用

(1)、 方法重载的主要好处就是,不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。重载比if…else要优雅,减少了if…else部分的代码。
(2)、重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

java方法重写(override)

方法的重写需要符合下面的三个要点:

  1. “==”:方法名、形参列表相同
  2. “s”:返回值类型和声明异常类型,子类小于等于父类
  3. “>=”:访问权限,子类大于等于父类
public class StudentClass1{
	public int test(int i){return 1;}
}

public class StudentClass2 extends StudentClass1{
	public int test(int i){return 2;}
}