用Java写程序,系统需求:某加油站推出了2种支付卡,一种是预存10000元的金卡,后续加油享受8折优惠,另外一种是预存5000元的银卡,后续加油享受8.5折优惠,请分别实现2中卡片进入收银系统后的逻辑,卡片需要包含主人名称、余额、支付功能。分析:创建一张卡片父类:定属性包括主人名称、余额、支付功能(具体实现交给子类)创建一张白金卡类:重写支付功能,按照原价的8折计算输出创建一张银卡类: 重写支付功能,按照原价的8.5折计算输出
时间: 2023-06-15 18:07:20 浏览: 125
好的,根据您的需求,我来给您提供一个 Java 程序的实现:
首先,我们来定义一个卡片父类,包含主人名称、余额、支付功能:
```java
public class Card {
protected String owner; // 持卡人名称
protected double balance; // 余额
public Card(String owner, double balance) {
this.owner = owner;
this.balance = balance;
}
public void pay(double amount) {
// 具体实现交给子类
}
}
```
然后,我们来创建一个白金卡类,重写支付功能,按照原价的8折计算输出:
```java
public class GoldCard extends Card {
public GoldCard(String owner, double balance) {
super(owner, balance);
}
@Override
public void pay(double amount) {
double discount = 0.8; // 折扣
double payable = amount * discount; // 实际支付金额
if (payable > balance) {
System.out.println("余额不足,请充值!");
} else {
balance -= payable;
System.out.println(owner + "使用金卡支付" + amount + "元,实际支付" + payable + "元,余额为" + balance + "元。");
}
}
}
```
最后,我们再创建一个银卡类,重写支付功能,按照原价的8.5折计算输出:
```java
public class SilverCard extends Card {
public SilverCard(String owner, double balance) {
super(owner, balance);
}
@Override
public void pay(double amount) {
double discount = 0.85; // 折扣
double payable = amount * discount; // 实际支付金额
if (payable > balance) {
System.out.println("余额不足,请充值!");
} else {
balance -= payable;
System.out.println(owner + "使用银卡支付" + amount + "元,实际支付" + payable + "元,余额为" + balance + "元。");
}
}
}
```
这样,我们就完成了两种卡片的实现。在实际使用时,可以根据需要创建相应的卡片对象,然后调用支付方法即可。例如:
```java
Card card1 = new GoldCard("张三", 10000);
card1.pay(1000); // 张三使用金卡支付1000元,实际支付800.0元,余额为9200.0元。
Card card2 = new SilverCard("李四", 5000);
card2.pay(2000); // 李四使用银卡支付2000元,实际支付1700.0元,余额为3300.0元。
```
希望这个实现能够帮到您!
阅读全文