回顾:支付系统
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 40 课,共 87 课。
挑战
简单让我们构建一个完整的支付处理系统,把你在本章学到的所有接口知识结合起来。你将创建一个灵活的系统,通过通用接口统一处理不同的支付方式。
你将把代码分布在 5 个文件中:
Payable.java:定义所有支付方式都必须实现的核心接口。它应声明一个名为pay(double amount)的方法,该方法返回描述支付操作的 String。CreditCard.java:创建一个实现Payable的类,用于表示信用卡支付。CreditCard 有一个cardNumber字段(String),用于存储末尾 4 位数字。添加一个构造函数来初始化它。pay方法应返回:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java:再创建一个实现Payable的类,用于处理 PayPal 支付。PayPal 账户有一个email字段(String)。添加一个构造函数来初始化它。pay方法应返回:Paid [amount] via PayPal account [email]PaymentProcessor.java:创建一个处理器类,可以处理任何Payable对象。它应有一个processPayment(Payable paymentMethod, double amount)方法,该方法调用支付方式的pay方法并返回结果。这展示了接口如何支持多态行为:处理器不需要知道具体的支付类型!Main.java:把所有内容组合起来。你将接收 3 个输入:卡号(末尾 4 位)、电子邮件地址和支付金额。创建一个PaymentProcessor,然后用它处理给定金额的CreditCard支付和PayPal账户支付。将每个结果分别打印在单独一行。
你将接收 3 个输入:卡号末尾的 4 位数字(String)、PayPal 电子邮件(String)和支付金额(double)。
输出时将金额格式化为小数点后两位。注意,借助接口的作用,同一个 PaymentProcessor 可以处理完全不同的支付类型!
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取输入
String cardNumber = scanner.nextLine(); // 最后 4 位数字
String email = scanner.nextLine(); // PayPal 邮箱
double amount = scanner.nextDouble(); // 支付金额
// TODO: 创建一个 PaymentProcessor
// TODO: 使用 cardNumber 创建一个 CreditCard
// TODO: 使用 email 创建一个 PayPal 账户
// TODO: 使用 CreditCard 处理付款并打印结果
// TODO: 使用 PayPal 处理付款并打印结果
}
}
面向对象编程中的所有课
自己练习: Java 在线编译器