JAVA描述一个pay接口至少包含微信支付方法,并在父类customer和子类vip两个类实现微信支付方法,最后在测试类完成结账
这里主要考验抽象类和方法重写的知识点。建议自己把相应的父类和子类创建出来,在父类中定义抽象微信支付方法,在子类中进行具体支付方法的实现。
不知道你这个问题是否已经解决, 如果还没有解决的话:该问题需要实现一个商品购买接口,包括买家身份(普通顾客和vip),以及微信支付方法。具体需要实现的内容包括:
根据以上分析,可以实现以下解决方案:
```java import java.util.ArrayList;
public class Cart { private ArrayList items; private double balance; // 购物车余额
public Cart() {
items = new ArrayList<Item>();
balance = 0;
}
public void addItem(Item item) {
items.add(item);
}
public void viewCart() {
System.out.println("====== 购物车商品列表 ======");
for (Item item: items) {
System.out.println(item.getName() + "\t\t" + item.getPrice());
}
System.out.println("============================");
}
public boolean settleAccount(Payable payMethod) {
double total = 0;
for (Item item: items) {
total += item.getPrice();
}
if (payMethod.pay(total)) {
balance += total;
items.clear();
return true;
} else {
return false;
}
}
// getter、setter 方法省略
} ```
java public enum CustomerType { VIP, NORMAL }
```java public interface Payable { boolean pay(double totalPrice); }
public class Book implements Item { private String name; private double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
public class Phone implements Item { private String name; private double price;
public Phone(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
public class BookPay implements Payable { public boolean pay(double totalPrice) { // 实现图书的微信支付逻辑 System.out.println("图书微信支付成功,支付金额:" + totalPrice); return true; } }
public class PhonePay implements Payable { public boolean pay(double totalPrice) { // 实现手机的微信支付逻辑 System.out.println("手机微信支付成功,支付金额:" + totalPrice); return true; } } ```
```java public class ShoppingCartTest { public static void main(String[] args) { Cart cart = new Cart(); Item book = new Book("Java 编程思想", 89.5); Item phone = new Phone("iPhone 12", 5899); Payable bookPayMethod = new BookPay(); Payable phonePayMethod = new PhonePay();
cart.addItem(book);
cart.addItem(phone);
cart.viewCart();
cart.settleAccount(bookPayMethod);
System.out.println("余额:" + cart.getBalance());
cart.addItem(phone);
cart.settleAccount(phonePayMethod);
System.out.println("余额:" + cart.getBalance());
}
} ```
需要注意以下几点: