银行卡有很多种比如 银卡 金卡 黑金卡 它们都可以支付 银卡支付(可以获取积分) 金卡(购物95折) 黑金卡(可以获取积分 购物95折) 运用抽象类和多态的思维进行编写
时间: 2024-05-24 19:14:34 浏览: 14
好的,让我来解答您的问题。银行卡可以被看作是一个父类,而银卡、金卡和黑金卡则是银行卡的子类。在这种情况下,可以使用抽象类和多态的思想来实现这个问题。
首先,我们可以定义一个抽象类BankCard作为父类,并且定义一个抽象方法payment,用于表示支付功能。然后,我们在其子类中实现这个方法。
接下来,我们可以在银卡、金卡和黑金卡这三个子类中分别实现该方法。在银卡中,可以在支付时获取积分。在金卡和黑金卡中,购物均享受95折优惠。同时,由于它们都是银行卡的子类,所以它们都可以被看作是银行卡,拥有相同的支付功能。
这样,使用抽象类和多态的思想,我们可以实现对银行卡不同类型的支付功能和优惠方式的描述。
相关问题
用Java写程序,创建一张卡片父类:定属性包括主人名称、余额、支付功能。创建一张金卡类:重写支付功能,按照原价的8折计算输出。创建一张银卡类: 重写支付功能,按照原价的8.5折计算输出。
下面是Java程序实现:
```java
// 定义卡片父类
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) {
if (balance >= amount) {
balance -= amount;
System.out.println(owner + "支付" + amount + "元,余额为" + balance + "元");
} else {
System.out.println(owner + "余额不足,支付失败");
}
}
}
// 金卡类
class GoldCard extends Card {
// 构造函数
public GoldCard(String owner, double balance) {
super(owner, balance);
}
// 支付功能重写,按照8折计算
public void pay(double amount) {
double discount = 0.8;
super.pay(amount * discount);
}
}
// 银卡类
class SilverCard extends Card {
// 构造函数
public SilverCard(String owner, double balance) {
super(owner, balance);
}
// 支付功能重写,按照8.5折计算
public void pay(double amount) {
double discount = 0.85;
super.pay(amount * discount);
}
}
public class CardDemo {
public static void main(String[] args) {
// 创建一张金卡和一张银卡
GoldCard goldCard = new GoldCard("张三", 1000);
SilverCard silverCard = new SilverCard("李四", 2000);
// 使用金卡和银卡进行支付测试
goldCard.pay(100);
silverCard.pay(200);
}
}
```
运行结果:
```
张三支付80.0元,余额为920.0元
李四支付170.0元,余额为1830.0元
```
用Java写程序,某加油站推出了2种支付卡,一种是预存10000元的金卡,后续加油享受8折优惠,另外一种是预存5000元的银卡,后续加油享受8.5折优惠,请分别实现2中卡片进入收银系统后的逻辑,卡片需要包含主人名称、余额、支付功能。卡片为父类,金卡和银卡为子类。
可以按照以下步骤进行实现:
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
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)