当前位置: 首页 > news >正文

案例 --- 加油站支付小模块(融合继承、多态知识)

案例 — 融合继承、多态

packagecom.itheima.demo;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){//1.创建卡片类,以便创建金卡或者银卡对象,封装车主的数据//2.定义一个卡片父类,Card,定义金卡和银卡的共同属性和方法//3.定义一个金卡类,继承Card类,金卡必须重写消费方法(8折优惠),独有功能打印洗车票//4.定义一个银卡类,继承Card类,金卡必须重写消费方法(9折优惠)//5.办一张金卡,创建金卡对象,交给一个独立的业务(支付机)来完成,存款,消费GoldCardgc=newGoldCard("京A88888","小王","13888888888",5000);pay(gc);//6.办一张银卡,创建金卡对象,交给一个独立的业务(支付机)来完成,存款,消费SilverCardsc=newSilverCard("晋A99999","小张","13899999999",2000);pay(sc);}//支付机,用一个方法来刷卡:既可能接收金卡,也可能接收银卡publicstaticvoidpay(Cardc){System.out.println("请刷卡,请您输入当前消费的金额");Scannersc=newScanner(System.in);doublemoney=sc.nextDouble();c.consume(money);}}//=========================================分割线=========================================packagecom.itheima.demo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;//lombok可以自动为类实现getter、setter方法 无参数构造器,toSpring方法等@Data//@NoArgsConstructor@AllArgsConstructor//添加有参构造器publicclassCard{privateStringcarId;//车牌号码privateStringname;privateStringphone;privatedoublemoney;//余额//预存金额publicvoiddeposit(doublemoney){this.money+=money;}//消费金额publicvoidconsume(doublemoney){this.money-=money;}}//=========================================分割线=========================================packagecom.itheima.demo;publicclassGoldCardextendsCard{publicGoldCard(StringcarId,Stringname,Stringphone,doublemoney){super(carId,name,phone,money);}@Overridepublicvoidconsume(doublemoney){System.out.println("您当前金卡消费:"+money);System.out.println("优惠后的价格:"+money*0.8);//在金卡子类中,可直接调用父类的getMoney(),而在测试类中则必须使用对象.getMoney()才能引用:gc.getMoney()if(getMoney()<=money*0.8){System.out.println("您余额是:"+getMoney()+",当前余额不足,请存钱");return;//干掉方法}//更新金卡的账户余额setMoney(getMoney()-money*0.8);System.out.println("您当前金卡余额是:"+getMoney());if(money*0.8>=200){printTicket();}else{System.out.println("您当前消费不满200,不能免费洗车");}}//打印洗车票publicvoidprintTicket(){System.out.println("您消费了,请打印洗车票");}}//=========================================分割线=========================================packagecom.itheima.demo;publicclassSilverCardextendsCard{publicSilverCard(StringcarId,Stringname,Stringphone,doublemoney){super(carId,name,phone,money);}@Overridepublicvoidconsume(doublemoney){System.out.println("您当前银卡消费:"+money);System.out.println("优惠后的价格:"+money*0.9);if(getMoney()<=money*0.9){System.out.println("您余额是:"+getMoney()+",当前余额不足,请存钱");return;//干掉方法}//更新银卡的账户余额setMoney(getMoney()-money*0.9);System.out.println("您当前银卡余额是:"+getMoney());}}


ps:
//lombok可以自动为类实现getter、setter方法 无参数构造器,toSpring方法等
@Data//
@NoArgsConstructor
@AllArgsConstructor//添加有参构造器
还需点击以上图片Enable按键

http://www.cnnetsun.cn/news/180890.html

相关文章:

  • 数据结构 —— 顺序表
  • 基于springboot的大创管理系统(11549)
  • springboot基于安卓的老年养护与智能服务系统
  • EasyGBS助力智慧医院打造全方位视频监控联网服务体系
  • 【收藏级】全面拆解GraphRAG:从原理到实践,大模型知识库升级必备
  • Java多态——Java的三大特性之一,零基础小白到精通,收藏这篇就够了
  • 【Open-AutoGLM元宇宙适配终极指南】:揭秘三大核心技术突破与落地实践
  • Open-AutoGLM如何实现自主学习?:深度剖析其进化机制与训练闭环设计
  • [驱动之路——GPIO子系统]学习总结,万字长篇,一文彻底搞懂GPIO子系统(含GPIO控制器驱动框架解析)
  • Open-AutoGLM如何重塑城市治理?:3个真实案例揭示AI协同调度的颠覆性力量
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 家长用Realme手机,怎样远程管理孩子iPhone的屏幕使用时长?
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • Java SpringBoot+Vue3+MyBatis 宠物爱心组织管理系统系统源码|前后端分离+MySQL数据库
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 揭秘Open-AutoGLM如何重构电子病历管理:医生工作效率翻倍的底层逻辑
  • NMOS的 G和D并联一个小电容作用和目的
  • 【网络空间安全】P2P网络及限制策略
  • Open-AutoGLM与AppDynamics监控策略剖析(仅限资深架构师掌握的3种模式)
  • 2025年北京大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 【高并发场景下的救星】:Open-AutoGLM智能会话销毁算法详解
  • 为什么你的请假申请总被驳回?,深度剖析Open-AutoGLM流程提交常见陷阱
  • 基于STM32自动售货机控制系统设计
  • Open-AutoGLM会话销毁机制大揭秘:如何实现毫秒级资源释放
  • 【光伏风电功率预测】调度员最需要什么样的 AI 预测?从一条曲线到“可执行方案”
  • 【企业级报销系统深度解读】:Open-AutoGLM单据提交的7个核心要点
  • 揭秘Open-AutoGLM会话超时机制:3步实现稳定可靠的对话控制
  • 别再盲目选型了,Open-AutoGLM与NeoLoad的3个核心差异你必须知道
  • 【Open-AutoGLM多模态理解突破】:揭秘下一代AI视觉语言模型核心技术
  • Open-AutoGLM与NeoLoad压测结果为何大相径庭(独家实测数据披露)