验证Method的invoke方法具有多态性

实现步骤如下: 

/*反射调用method具有多态性:
* 一、创建接口Hello;
* 二、创建接口Hello的实现类1:HelloImpl;
* 三、创建接口Hello的实现类2:HelloImpl1;
* 四、创建测试类,在测试类的主方法中进行测试,测试内容为:
*   1、通过Method method = Hello.class.getMethod("sayHello",String.class);获取接口的sayHello抽象方法;
*   2、分别实例化实现类1与实现类2为helloImpl与helloImpl1;
*   3、调用method.invoke()方法,将两个实现类分别作为第一个参数传入;
*   4、结果表明具有多态性。
* */

接口Hello: 

package com.bjpowernode.reflact;

public interface Hello {
    void sayHello(String name);
}

实现类HelloImpl:

package com.bjpowernode.reflact;

public class HelloImpl implements Hello{
    @Override
    public void sayHello(String name) {
        System.out.println("你好" + name);
    }
}

 实现类HelloImpl1:

package com.bjpowernode.reflact;

public class HelloImpl1 implements Hello{
    @Override
    public void sayHello(String name) {
        System.out.println("你好呀" + name);
    }
}

 测试类:

public class ReflactHello {
    @Test
    public void testHello(){
        //System.out.println(Hello.class);//interface com.bjpowernode.reflact.Hello
        /*通过反射机制调用方法*/
        try {
            /*获取接口的方法*/
            Method method = Hello.class.getMethod("sayHello",String.class);
            /*实例化实现类*/
            HelloImpl helloImpl = new HelloImpl();
            HelloImpl1 helloImpl1 = new HelloImpl1();
            /*执行实现类的实现方法*/
            method.invoke(helloImpl,"张三");//你好张三
            method.invoke(helloImpl1,"张三");//你好呀张三
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

         证毕.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值