原来继承可以这样用的

曾经有人说过,不要去继承一个已经实现好的类,因为涉及到覆写问题。那我就在父类那里写好公用部分的方法,然后在子类中super一下就好啦。

demo如下:

1.父类:

public abstract class TransferMessage extends Message {
	 private static Logger log= Logger.getLogger(TransferBean.class.getName());
	protected TransferMessage(){}
	/**
	 * 将Xml格式字符串转换成TransferMessage
	 * 
	 */
	protected TransferMessage(String xmlMessage){
		
		Document doc=null;
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db;
		try {
			db = dbf.newDocumentBuilder();
	        try {
				doc = db.parse(new InputSource(new StringReader(xmlMessage)));
				setLanguage(XmlUtil.getElementValue("language", doc));
				setBatchID(XmlUtil.getElementValue("batchID", doc));
				setTransPatches(XmlUtil.getElementValue("transPatches", doc));
				String transSum = XmlUtil.getElementValue("transSum", doc);
				if(transSum != null && transSum != ""){
					setTransSum(new BigDecimal(transSum));
				}
				
			} catch (SAXException e) {
				e.printStackTrace();
				log.info("没有传进xml格式字符串内容,很可能是网络不通导致没有交易结果返回;"+e);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
	}
}
 
 
2.子类
 
public class QueryAccountResponseMessage extends TransferMessage {
	
	public QueryAccountResponseMessage(){}
	
	public QueryAccountResponseMessage(String xmlMessage,String batchID){
		
		super(xmlMessage);
		setResponseTime(XmlUtil.getElementValue("respondTime", doc));
//这里的doc是父类的
  		ResponseStatus status = new ResponseStatus();
		status.setResponseCode(XmlUtil.getElementValue("respondCode",doc));
		status.setResponseInfo(XmlUtil.getElementValue("respondInfo",doc));
		setResponseStatus(status);
		setUserID(XmlUtil.getElementValue("userID", doc));
		
		List<BalanceAccountResponseRecord> list = new ArrayList<BalanceAccountResponseRecord>();
		NodeList nodeList = doc.getElementsByTagName("balanceRespondRecord");
		if(nodeList != null && nodeList.getLength() != 0){
			for(int i=0; i < nodeList.getLength(); i++){
				BalanceAccountResponseRecord record = new BalanceAccountResponseRecord();
				NodeList nodes = nodeList.item(i).getChildNodes();
				if(nodes != null && nodes.getLength() != 0){
					record.setClientPatchID(XmlUtil.getElementValue("clientPatchID", nodes));
					record.setAccountNo(XmlUtil.getElementValue("accountNo", nodes));					
					record.setReturnCode(XmlUtil.getElementValue("returnCode", nodes));
					record.setReturnInfo(XmlUtil.getElementValue("returnInfo", nodes));					
				    record.setAccountBalance(XmlUtil.getElementValue("accountBalance", nodes));
				    record.setAvailableBalance(XmlUtil.getElementValue("availableBalance", nodes));
				}				
				list.add(record);
			}
			setTransferResponseRecord(list);
		}
	}



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值