1.
1) 定义一个抽象类Payment, 该类有一个抽象方法pay,接收double类型数据,返回值为double类型
2) 定义两个类AliPay与Cash, 分别继承Payment, AliPay对接受金额随机打5到8折,Cash则需要全额支付
3) 定义一个Person类,拥有静态方法buy,根据接收的String类型参数,判断支付方式.若输入AliPay,
则返回AliPay对象,输入Cash返回Cash对象,其他情况默认为Cash支付
4) 在测试类中测试.
以下为示例:
请您选择付款的方式以及金额
AliPay,35
欢迎使用支付宝付款
恭喜您打6折
最后付款金额:21.0
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请您选择付款的方式以及方法,格式(xxx,xx)");
String s = sc.nextLine();
String[] arr = s.split(",");
double d = Person.buy(arr[0]).pay(Integer.parseInt(arr[1]));
System.out.println("最后付款金额: " + d);
}
class Person{
public static Payment buy(String s){
if ("AliPay".equals(s)) {
return new AliPay();
}else {
return new Cash();
}
}
}
abstract class Payment{
public abstract double pay(double d);
}
class AliPay extends Payment{
Random r = new Random();
@Override
public double pay(double d) {
System.out.println("欢迎使用支付宝付款");
double num = r.nextInt(4)+5;
System.out.println("恭喜你打" + num + "折");
return d * num / 10;
}
}
class Cash extends Payment{
@Override
public double pay(double d) {
return d;
}
}
|