重载(overloading):
1. 在同一个类中, 方法(又称函数)名称相同, 但是参数类型或者个数不一样,
2. 返回值类型可以相同, 也可以不相同。不能以返回值来判断是否是方法重载
3. 普通的方法重载
public static long sum(inta, intb) {
returna + b;
}
public static long sum(longa, longb) {
returna + b;
}
4. 构造方法重载
public class Person {
privateDoubleweight;
private Integer height;
public Person() {}
publicPerson(Double weight) {
this.weight= weight;
}
publicPerson(Double weight,Integer height) {
this.weight= weight;
this.height= height;
}
}
5. 方法重载的一些约定俗成:
- 为了方便开发, 我们要返回相同的类型
- 为了方便阅读和开发, 重载的函数,按照参数的个数顺序来排序
重写(overriding):
1. 当一个类继承父类的时候,那么这个类就继承了父类的方法
2. 如果子类想对父类的方法做一些修改, 那么就需要修改父类中的方法, 这个过程就叫方法重写(也称方法覆盖)
3. 方法重写必须遵守的规则:
- 重写的方法必须与被重写的方法参数列表保持一致
- 重写的方法必须与被重写的方法返回类型保持一致
- 重写的方法的访问控制修饰符必须大于被重写方法的访问控制修饰符(当然private除外, 因为priavte定义的方法无法被子类访问到), public > protected> default
- 重写的方法不能抛出新的检查异常(checked exception), 也不能抛出比被重写方法更加宽泛的检查性异常
public class Parent {
String print(String msg) throwsRuntimeException {
return"父类msg: "+ msg;
}
}
public class ChildextendsParent {
@Override
publicStringprint(String msg)throwsNullPointerException {
return"子类msg:"+ msg;
}
}
- 为了方便开发和阅读, 请使用Override进行精确重写