【JavaSE】方法重载和重写

下面的例子展现了方法重载和重写的区别:
package com.xs;

/**
 * 重载和重写
 * 
 * @author Administrator
 * 
 */
public class OverLoadAndOverrideTest extends Service {

	/**
	 * 方法重写
	 */
	@Override
	public 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) {
	}
}
输出:
方法重写
方法重载

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

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

方法重写
方法重写



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值