【JavaSE】方法重载和重写

来源:互联网 发布:做原油的软件 编辑:程序博客网 时间:2024/04/30 05:40
下面的例子展现了方法重载和重写的区别:
package com.xs;/** * 重载和重写 *  * @author Administrator *  */public class OverLoadAndOverrideTest extends Service {/** * 方法重写 */@Overridepublic void request(RequestParamsA paramsA) {System.out.println("方法重写");}/** * 方法重载,不能加Override注解 *  * @param hashMap */public void request(RequestParamsB paramsB) {System.out.println("方法重载");}/** * @param args */public static void main(String[] args) {OverLoadAndOverrideTest service = new OverLoadAndOverrideTest();service.request(new RequestParamsA());service.request(new RequestParamsB());}}class RequestParamsA {}class RequestParamsB extends RequestParamsA {}class Service {public void request(RequestParamsA paramsA) {}}
输出:
方法重写方法重载

注:以上的设计实际上违背了里氏替换原则。根据里氏替换原则,子类重载父类的方法时,子类的前置条件(输入参数)应该比父类更宽松,以保证父类的重载方法优先被调用。这里为了演示方便就不深究了。

如果将重载的方法删掉,程序仍能执行,但输出结果如下:

方法重写方法重写



0 0