1.重载
-
前提:对于功能类似的方法来说,因为参数列表不一样,却要记住那么多不同的方法名称,太麻烦
-
方法的重载(Overload):多个方法的名称一样(减少方法名称的数量),但是参数列表不同
-
优点:只需要记住唯一一个方法名称,就可以实现类似的多个功能
-
方法重载(只看参数)与下列因素相关(参数列表不一样):
1.参数个数不同
2.参数类型不同(若有逆变则视为相同)
3,参数的多类型顺序不同
-
方法重载于下列因素无关
1.与参数的名称无关
2.与方法的返回值类型无关
例子:
public class Demo04MethodOverload {
public static void main(String[] args) {
System.out.println(sum(5,10));
}
public static int sum(int a,int b){
System.out.println("有2个参数的方法执行");
return a+b;
}
/*public static int sum(int x,int y){
System.out.println("有2个参数的方法执行");
return x+y; 不可以 因为和上面相同
}*/
/*
参数的类型不同
*/
public static int sum(double a,double b){
System.out.println("有2个参数的方法执行");
return(int)(a+b);
}
public static int sum(int a,int b,int c){
return a+b+c;
}
public static int sum(int a,int b,int c,int d){
return a+b+c+d;
}
}
2.重写
概念:
-
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
-
2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)
-
3、重写方法不能使用比被重写的方法更严格的访问权限。
-
4、重写方法不能声明抛出比被重写方法范围更大的异常类型。
总结:
-
重写是子类对所继承父类相同方法的一种更改,这个更改需要遵循格式按照父类的格式,访问权限,抛出异常等等,都在父类方法控制范围内,内部具体实现可以实现不同的效果。通俗一点来说:重写就是对父类的的同一个方法的改写,但是别人怎么知道你这是重写,不是添加的新方法?这就要求格式必须跟父类相同,别人一看,呀,他俩长的一模一样(指的上面2,3,4规则),肯定是重新写了,就是重写。
例子:
//定义父类:
public class Father extends Grandpa {
String add(int a, int b) {
int c = a + b;
return "" + c;
}
}
//定义子类
public class Son extends Father {
String add(int a, int b) {
int c = a + b;
return "" + c;
}
public static void main(String[] args) {
Son son = new Son();
}
}