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)
方法的重写需要符合下面的三个要点:
- “==”:方法名、形参列表相同
- “s”:返回值类型和声明异常类型,子类小于等于父类
- “>=”:访问权限,子类大于等于父类
public class StudentClass1{
public int test(int i){return 1;}
}
public class StudentClass2 extends StudentClass1{
public int test(int i){return 2;}
}