首页 > 其他分享 >题目:美团外卖(简)

题目:美团外卖(简)

时间:2022-10-09 14:01:37浏览次数:39  
标签:题目 void public gao 外卖 test01 com 美团 payonline

package com.gao.Reflect.test01;
  //接口的制定方:美团外卖
public interface Mtwm {
    //在线支付功能:
      void payonline();
}
package com.gao.Reflect.test01;

public class WeChat implements Mtwm{
    @Override
    public void payonline() {
        //具体实现微信支付的功能
        System.out.println("我已经点了外卖,正在进行微信支付");
    }
}

package com.gao.Reflect.test01;

public class AliPay implements Mtwm{
    @Override
    public void payonline() {
        //具体实现支付宝支付的功能
        System.out.println("我已经点了外卖,正在进行支付宝支付");
    }
}

package com.gao.Reflect.test01;

public class BankCard implements Mtwm{

    @Override
    public void payonline() {
        System.out.println("我已经点了外卖,正在进行银行卡支付");
    }
}

package com.gao.Reflect.test01;

public class test {
    public static void main(String[] args) {
        // 定义一个字符串,用来模拟前台的收银方式
        String str = "支付宝"; //以后可以学习从前面接收的方法,现在选择手动输入
        //微信支付
        if("微信".equals(str)){//str.equals("微信")--->容易报空指针异常
            //new WeChat().payonline();//提取出一个方法
            pay(new WeChat());
        }

        //支付宝支付
        if("支付宝".equals(str)){
            //new AliPay().payonline();
            pay(new AliPay());
        }
        //银行卡支付
        if("银行卡".equals(str)){
            pay(new BankCard());
        }
    }
    /*第一种方法
    //微信支付
    public static void pay(WeChat wc){
        wc.payonline();
    }
    //支付宝支付
    public static void pay(AliPay ap){
        ap.payonline();
    }
    //银行卡支付
    public static void pay(BankCard bc){
        bc.payonline();
    }
    */

    //第二种法
    //为了提高代码的延展性--->面向对象的特性:多态
    //方法形参是接口,具体传入的是接口的实现类的对象---->多态的一种形式
    public static void pay(Mtwm m){
        m.payonline();
    }
}

利用反射解决 (方法三)

package com.gao.Reflect.test01;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        String str = "com.gao.Reflect.test01.WeChat";//字符串:实际上是微信类的全限定路径
        //下面的代码就是反射
        Class cls = Class.forName(str);
        Object o = cls.newInstance();
        Method method = cls.getMethod("payonline");
        method.invoke(o);
    }
}

标签:题目,void,public,gao,外卖,test01,com,美团,payonline
From: https://www.cnblogs.com/gaoxiaocuo/p/16771879.html

相关文章