BusCard
import java.math.BigDecimal;
public class BusCard {
/**
* 账户余额
*/
BigDecimal money;
/**
* 账户名
*/
String name;
public BusCard() {
this.money = new BigDecimal(10000);
this.name = "商务卡";
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public String getName() {
return name;
}
public void withdraw(BigDecimal newMoney) {
this.money = this.money.subtract(newMoney).setScale(2, BigDecimal.ROUND_DOWN);
}
@Override
public String toString() {
return "[卡牌类型]" + name + ";" + "[剩余额度]" + money;
}
}
PublicCard
import java.math.BigDecimal;
public class PublicCard extends BusCard{
/**
* 积分
*/
Integer score;
/**
* 倍率
*/
Integer multiple;
public PublicCard() {
this.money = new BigDecimal(10000);
this.name = "普金卡";
this.score = 0;
this.multiple = 1;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
@Override
public void withdraw(BigDecimal newMoney) {
super.withdraw(newMoney);
this.score += newMoney.setScale(0, BigDecimal.ROUND_UP).intValue() * multiple;
}
@Override
public String toString() {
return "[卡牌类型]" + name + ";" + "[剩余额度]" + money +"[积分]" + score;
}
}
BlackCard
import java.math.BigDecimal;
public class BlackCard extends PublicCard{
static final Integer a = Integer.MAX_VALUE;
String[] rights = {};
public BlackCard() {
this.money = new BigDecimal(a.toString());
this.name = "黑金卡";
this.score = 0;
this.multiple = 100;
this.rights = new String[]{"机场贵宾厅", "境内接送机"};
}
public String[] getRights() {
return rights;
}
@Override
public void withdraw(BigDecimal newMoney) {
super.withdraw(newMoney);
}
public String showArray(String[] s) {
String str = "";
for (int i = 0; i < s.length; i++) {
str += s[i];
if(i != s.length -1) {
str += ",";
}
}
return str;
}
@Override
public String toString() {
return "[卡牌类型]" + name + ";" + "[剩余额度]" + Double.valueOf(money.toString()) +"[积分]" + score +"[权益]" +
showArray(rights);
}
}
User
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class User {
List<BusCard> list = new ArrayList<>();
public void pay(BusCard busCard, BigDecimal money) {
busCard.withdraw(money);
}
public void addCard(BusCard busCard) {
list.add(busCard);
}
}
Main
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BusCard busCard = new BusCard();
PublicCard publicCard = new PublicCard();
BlackCard blackCard = new BlackCard();
User user = new User();
user.addCard(busCard);
user.addCard(publicCard);
user.addCard(blackCard);
System.out.println(Integer.MAX_VALUE);
System.out.println(publicCard.toString());
user.pay(publicCard, new BigDecimal(500.5));
System.out.println(publicCard.toString());
System.out.println(busCard.toString());
user.pay(busCard, new BigDecimal(888.88));
System.out.println(busCard.toString());
System.out.println(blackCard.toString());
user.pay(blackCard, new BigDecimal(101111));
System.out.println(blackCard.toString());
}
}