java继承和多态实例_java的继承和多态实例

1.继承是java的三大特性之一,继承可以形容成父子关系,继承是单一性的,指一个类只有一个父类 .继承中子类可以重写父类方法,

重写的三不变: 方法名不变,方法入参类型不变,方法的返回值类型不变

(注意点) 方法的重载: 在同一个类中,方法名相同 方法参数个数不同,类型不同

2.多态也是java的三大特性之一,一个对象多种形态,一个类有多个子类,每个子类展现不同的特性

代码实现

//父类接口类

public interface OrderCostHandleService {

/**

* 判断是否需要执行doHandle方法

*

* @param feeTicketModel

* @return

*/

boolean canDo(FeeTicketModel feeTicketModel);

/**

*具体的业务方法

* @param orderDo

* @param orderBaseInfoVo

* @param feeTicketModel

*/

void doHandle(OrderDo orderDo,

OrderBaseInfoVo orderBaseInfoVo,

FeeTicketModel feeTicketModel);

}

// doHandle方法重写,判断子类实体类是否需要执行

public abstract class AbstractOrderCostHandleService implements OrderCostHandleService {

@Autowired

protected CommonDaoService commonDaoService;

@Autowired

protected OrderCommonService orderCommonService;

/**

* 对具体的费用类型数据库操作

*

* @param orderDo

* @param orderBaseInfoVo

* @param feeTicketModel

*/

@Override

public void doHandle(OrderDo orderDo,

OrderBaseInfoVo orderBaseInfoVo,

FeeTicketModel feeTicketModel) {

if (feeTicketModel.getTotalFee().getValue().compareTo(BigDecimal.ZERO) == 0) {

return;

}

deal(orderDo, orderBaseInfoVo, feeTicketModel);

}

/**

* 处理

*

* @param orderDo

* @param orderBaseInfoVo

* @param feeTicketModel

*/

protected abstract void deal(OrderDo orderDo,

OrderBaseInfoVo orderBaseInfoVo,

FeeTicketModel feeTicketModel);

}

//子类实体类

@Service("OrderCostBalanceService")

public class OrderCostBalanceServiceImpl extends AbstractOrderCostHandleService {

/**

* 判断是否需要执行doHandle方法

*

* @param feeTicketModel

* @return

*/

@Override

public boolean canDo(FeeTicketModel feeTicketModel) {

return feeTicketModel.getFeeType() == FeeTicketEnum.common_point_fee;

}

/**

* 处理

*

* @param orderDo

* @param orderBaseInfoVo

* @param feeTicketModel

*/

@Override

@Transactional(rollbackFor = Exception.class)

public void deal(OrderDo orderDo,

OrderBaseInfoVo orderBaseInfoVo,

FeeTicketModel feeTicketModel) {

// 获取通用对象

CgcUserFund cgcUserFund = commonDaoService.get(CgcUserFund.class, orderDo.getUserId());

}

}

//子类实体类

@Service("orderCostCouponService")

public class OrderCostCouponServiceImpl extends AbstractOrderCostHandleService {

/**

* 判断是否需要执行doHandle方法

*

* @param feeTicketModel

* @return

*/

@Override

public boolean canDo(FeeTicketModel feeTicketModel) {

return feeTicketModel.getFeeType() == FeeTicketEnum.coupons_fee;

}

/**

* 处理

*

* @param orderDo

* @param orderBaseInfoVo

* @param feeTicketModel

*/

@Override

@Transactional(rollbackFor = Exception.class)

public void deal(OrderDo orderDo,

OrderBaseInfoVo orderBaseInfoVo,

FeeTicketModel feeTicketModel) {

//子/母订单设置优惠总额

CgcOrderBasicInfo cgcOrderBasicInfo = orderBaseInfoVo.getCgcOrderBasicInfo();

cgcOrderBasicInfo.setDiscountPrice(feeTicketModel.getTotalFee().getValue());

CgcOrderSubBasic cgcOrderSubBasic = orderBaseInfoVo.getCgcOrderSubBasic();

cgcOrderSubBasic.setDiscountPrice(feeTicketModel.getTotalFee().getValue());

//设置orderlist商品中每个商品的优惠平摊额

updateGoodsDiscount(orderBaseInfoVo.getCgcOrderGoodsList(), feeTicketModel);

//更新user-coupon表的信息

updateUserCoupon(feeTicketModel, cgcOrderBasicInfo, cgcOrderSubBasic);

}

}

/**

* 获取处理器

*

* @return

*/

private List getOrderCostHandleServices() {

if (this.orderCostHandleServices == null) {

synchronized (this) {

if (this.orderCostHandleServices == null) {

Map<> map=ApplicationContext.getBeanOfType(OrderCostHandleService.class);

// this.orderCostHandleServices = ApplicationContext.getBeanList(OrderCostHandleService.class);

}

}

}

return this.orderCostHandleServices;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值