用Java写程序,某加油站推出了2种支付卡,一种是预存10000元的金卡,后续加油享受8折优惠,另外一种是预存5000元的银卡,后续加油享受8.5折优惠,请分别实现2中卡片进入收银系统后的逻辑,卡片需要包含主人名称、余额、支付功能。卡片为父类,金卡和银卡为子类。
时间: 2023-06-15 19:06:17 浏览: 169
Java 小程序V3支付 apiv3 后端代码实现与工具
可以按照以下步骤进行实现:
1. 定义一个卡片(Card)类,包含主人名称(ownerName)和余额(balance)属性,以及支付(pay)方法。
```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 double getBalance() {
return balance;
}
public void pay(double amount) {
balance -= amount;
}
}
```
2. 定义一个金卡(GoldCard)类和一个银卡(SilverCard)类,分别继承自卡片类。
```java
public class GoldCard extends Card {
public GoldCard(String ownerName, double balance) {
super(ownerName, balance);
}
public void pay(double amount) {
super.pay(amount * 0.8);
}
}
public class SilverCard extends Card {
public SilverCard(String ownerName, double balance) {
super(ownerName, balance);
}
public void pay(double amount) {
super.pay(amount * 0.85);
}
}
```
3. 在收银系统中,可以创建金卡和银卡的实例,然后调用支付方法进行支付。
```java
public class Cashier {
public static void main(String[] args) {
GoldCard goldCard = new GoldCard("张三", 10000);
SilverCard silverCard = new SilverCard("李四", 5000);
// 使用金卡支付100元
double amount = 100;
goldCard.pay(amount);
System.out.println(goldCard.getOwnerName() + " 使用金卡支付了 " + amount + " 元,余额为:" + goldCard.getBalance());
// 使用银卡支付200元
amount = 200;
silverCard.pay(amount);
System.out.println(silverCard.getOwnerName() + " 使用银卡支付了 " + amount + " 元,余额为:" + silverCard.getBalance());
}
}
```
输出结果如下:
```
张三 使用金卡支付了 100.0 元,余额为:9200.0
李四 使用银卡支付了 200.0 元,余额为:4650.0
```
阅读全文