重写(Override)
从字面上看,重写就是重写一遍。其实就是在子类中把父类本身已有的方法重新写一遍。子类继承父类原有的方法,但父类中该方法的功能逻辑并不满足现在的功能需求,所以在方法名、参数列表、返回类型都相同的情况下,对方法体进行修改或重写,这就是重写。但是子类方法的访问修饰符权限不可小于父类,注意:父类中被private(私有方法)修饰的方法不可重写,但子类可自己实现该方法,不叫重载也不叫重写,是该子类新增的方法。
public class User {
public void add(){
System.out.println("新增");
}
}
class Student extends User{
@Override
public void add(){
System.out.println("重新新增方法");
}
}
总结:
1、发生在父类和子类之间;
2、方法名、参数列表、返回类型必须相同;
3、子类重写方法的访问修饰符限制一定要大于父类被重写方法的修饰符(public>protected>default>private)
4、子类重写方法一定不能抛出新的检查异常, 或者比父类被重写方法更加宽泛的检查异常.
重载(Overload)
在同一个类中,方法名称一致, 但参数个数、参数类型
、参数顺序不同、方法返回值可相同可不同、方法修饰符不同,发生在编译时期;
总结:
1、重载是同一个类的多态性的一种表现;
2、重载要求同名方法的参数个数、参数类型、参数顺序不同;
3、返回值类型可相同可不同;
4、发生在编译时期。