// 密封接口'PaymentMethod'只允许有限的实现集合
public sealed interface PaymentMethod permits CreditCardPayment, PayPalPayment, BankTransferPayment {}
// 信用卡支付的final类
public final class CreditCardPayment implements PaymentMethod {
private final String cardNumber;
private final String cardHolderName;
public CreditCardPayment(String cardNumber, String cardHolderName) {
this.cardNumber = cardNumber;
this.cardHolderName = cardHolderName;
}
public String getCardNumber() {
return cardNumber;
}
public String getCardHolderName() {
return cardHolderName;
}
}
// PayPal支付的final类
public final class PayPalPayment implements PaymentMethod {
private final String email;
public PayPalPayment(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
// 银行转账支付的final类
public final class BankTransferPayment implements PaymentMethod {
private final String accountNumber;
private final String routingNumber;
public BankTransferPayment(String accountNumber, String routingNumber) {
this.accountNumber = accountNumber;
this.routingNumber = routingNumber;
}
public String getAccountNumber() {
return accountNumber;
}
public String getRoutingNumber() {
return routingNumber;
}
}