java案例--利用抽象类模拟加油站消费

系统需求

某加油站推出了2种支付卡,一种是预存10000的金卡,后续加油享受8折优惠,

                                            一种是预存5000的银卡 ,后续加油享受8.5折优惠。

 请分别实现2种卡片进入收银系统后的逻辑,卡片需要包含主人名称,余额,支付功能

分析实现

1.创建一张卡片父类:定义属性包括主人名称、余额、支付功能(具体实现交给子类)

2.创建一张白金卡类:重写支付功能,按照原价的8折计算输出。

3.创建一张银卡类:重写支付功能,按照原价的8.5折计算输出。

实现步骤

1.先创建父类Card,用于子类继承;

public abstract class card {
    private String name;
    private double momey;

    //抽象方法中的形参paymoney是用户本来要支付的价钱
    public abstract void pay(double paymoney);
    
    public String getName() { return name; }

    public void setName(String name) { this.name = name; }

    public double getMomey() { return momey; }

    public void setMomey(double momey) { this.momey = momey; }
}

2.创建子类金卡goldCard

public class goldCard extends card {

    @Override
    public void pay(double paymoney) {
        //1.计算优惠金额
        double rsmoney = paymoney * 0.8;
        System.out.println(getName()+"贵宾,您消费前账户余额:" + getMomey());

        //2.定义变量接收账户余额减去消费金额,然后用set方法更新账余额
        double lastMoney = getMomey() - rsmoney;
        setMomey(lastMoney);
        System.out.println(getName()+"贵宾,您消费后账户余额:" + getMomey());
    }
}

3.同样的方法创建子类银卡silveraCard 

public class silveraCard extends card {
    @Override
    public void pay(double paymoney) {
        //1.计算优惠金额
        double rsmoney = paymoney * 0.85;
        System.out.println(getName()+"贵宾,您消费前账户余额:" + getMomey());

        //2.定义变量接收账户余额减去消费金额,然后用set方法更新账余额
        double lastMoney = getMomey() - rsmoney;
        setMomey(lastMoney);
        System.out.println(getName()+"贵宾,您消费后账户余额:" + getMomey());
    }
}

4.创建一个测试类用于查看结果 

public class Test {
    public static void main(String[] args) {
        //1.分别创建金卡和银卡对象并存入金额

        goldCard G = new goldCard();//金卡
        G.setMomey(10000);
        G.setName("库里");

        //2.调用pay方法,模拟加油付钱

        G.pay(500);

        silveraCard S = new silveraCard();//银卡
        S.setMomey(5000);
        S.setName("汤普森");

        S.pay(500);

    }
}

输出结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值