Override:
即重写覆盖之意。在子类中的方法实现可能与父类不同,此时便需要Override重写方法函数,覆盖原父类中的方法。当子类调用这个方法的时候,父类的方法被“屏蔽”,调用子类中的方法。若父类中的被重写函数体不为空,则意味着该方法对大多数子类而言可以直接复用,但有一些特殊的子类需要实现一些特殊要求,故需要重写;若父类中的被重写函数体为空,意味着所有子类都需要这个功能,但各有差异没有共性,在每个子类中均需重写。
重写的方法:
名称,参数列表,返回类型一定相同;
方法若被定义为final则无法重写;
重写时需要注意不改变方法的本意;
覆盖的方法所抛出的异常必须与被覆盖方法抛出的异常一致;
若方法在父类中为private,在子类中无法重写;
重写后若想调用父类中的方法,需要用super进行复用;
实际执行哪个方法,是在运行时决定的,属于动态检查。
Overload:
即重新加载(load),重载之意,体现类的多态性。
其中重载的方法:
名称相同;
参数列表一定不同;
返回值类型,public/private/protected可以不同;
可以抛出新的异常;
可以在同一类中重载,也可以在子类中重载;
Overload是静态多态,在编译阶段编译器根据参数列表进行最佳匹配,决定要执行哪个方法,属于静态检查。
仅是本人个人学习的过程体会总结,如有错误,欢迎及时指出探讨!