用java写出·某加油站推出了2种支付卡,一种是预存10000的金卡,后续加油享受8折优惠,另一种是预存5000的银卡,后续加油享受8.5折优惠 请分别实现2种卡片进入收银系统后的逻辑,卡片需要包含主人名称,余额,支付功能。 分析实现 创建一张卡片父类:定义属性包括主人名称、余额、支付功能(具体实现交给子类) 创建一张白金卡类:重写支付功能,按照原价的8折计算输出。 创建一张银卡类:重写支付功能,按照原价的8.5折计算输出。
时间: 2023-06-15 21:08:14 浏览: 169
用户卡的种类-中石化加油IC卡工程
以下是Java代码实现:
```
//卡片类
public class Card {
private String ownerName;
private double balance;
public Card(String ownerName, double balance) {
this.ownerName = ownerName;
this.balance = balance;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
//支付功能,具体实现交给子类
public void pay(double amount) {
//默认不做任何操作
}
}
//白金卡类
public class GoldCard extends Card {
public GoldCard(String ownerName, double balance) {
super(ownerName, balance);
}
//重写支付功能,按照8折计算输出
@Override
public void pay(double amount) {
double discountedAmount = amount * 0.8;
if (discountedAmount > getBalance()) {
System.out.println("支付失败,余额不足");
} else {
setBalance(getBalance() - discountedAmount);
System.out.println("支付成功,实际支付金额为:" + discountedAmount);
}
}
}
//银卡类
public class SilverCard extends Card {
public SilverCard(String ownerName, double balance) {
super(ownerName, balance);
}
//重写支付功能,按照8.5折计算输出
@Override
public void pay(double amount) {
double discountedAmount = amount * 0.85;
if (discountedAmount > getBalance()) {
System.out.println("支付失败,余额不足");
} else {
setBalance(getBalance() - discountedAmount);
System.out.println("支付成功,实际支付金额为:" + discountedAmount);
}
}
}
//收银系统类
public class Cashier {
public static void main(String[] args) {
//创建一张白金卡
GoldCard goldCard = new GoldCard("张三", 10000);
//使用白金卡支付500元
goldCard.pay(500);
//创建一张银卡
SilverCard silverCard = new SilverCard("李四", 5000);
//使用银卡支付1000元
silverCard.pay(1000);
}
}
```
运行结果:
```
支付成功,实际支付金额为:400.0
支付成功,实际支付金额为:850.0
```
阅读全文