Java入门——抽象类案例

案例:

  • 某加油站推出了2种支付卡,一种是预存10000的金卡,后续加油享受8折优惠,另一种是预存5000的银卡,后续加油享受8.5折优惠。
  • 请分别实现2张卡片进入收银系统后的逻辑,卡片需要包含主人名称,余额,支付功能。

1.创建一个父类Card:

public abstract class Card {
    private String userName;
    private double money;//卡片的余额

    /**
     *定义一个支付方法,表示卡片可以支付
     * 因为每张卡片的支付方式不一样,所以不能在父类中定死,
     * 但每张卡片都要执行支付功能且支付行为不一样,所以把支付手段定义为子类中的约定手段,使用抽象方法
     * nomey:代表消费的余额。
     */
    public abstract void pay(double nomey);

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

2.创建子类,金卡用户和银卡用户:

//金卡用户
public class GoldCard extends Card {
    @Override
    public void pay(double money02) {
        System.out.println("尊贵的金卡会员,您好。");
        System.out.println("您当前消费:" + money02 );
        System.out.println("您的卡片当前余额是:" + getMoney());
        //优惠价
        double rs = money02 * 0.8;
        System.out.println(getUserName() + "您实际消费为:" + rs);
        //更新账户余额,这里假设他当前余额大于消费余额
        setMoney(getMoney() - rs);
    }
}
//银卡用户
public class SilverCard extends Card{
    @Override
    public void pay(double money02) {
        System.out.println("尊贵的银卡卡会员,您好。");
        System.out.println("您当前消费:" + money02 );
        System.out.println("您的卡片当前余额是:" + getMoney());
        //优惠价
        double rs = money02 * 0.85;
        System.out.println(getUserName() + "您实际消费为:" + rs);
        //更新账户余额,这里假设他当前余额大于消费余额
        setMoney(getMoney() - rs);
    }
}

 3.使用抽象类:

public class Demo {
    public static void main(String[] args) {
        //学习抽象类的基本使用:做父类,被继承,重写抽象方法
        GoldCard c = new GoldCard();
        c.setMoney(10000);
        c.setUserName("qing");
        c.pay(300);
        System.out.println("剩余:" + c.getMoney());

        SilverCard c1 = new SilverCard();
        c1.setMoney(10000);
        c1.setUserName("chen");
        c1.pay(300);
        System.out.println("剩余:" + c1.getMoney());
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值