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);

    }
}

输出结果

java案例--利用抽象类模拟加油站消费_第1张图片

 

你可能感兴趣的:(java,学习)