package com.interfaces; public interface A { public void test(); }
package com.interfaces; public class B implements A{ @Override public void test() { System.out.println("This B"); } }
package com.interfaces; public class C implements A{ @Override public void test() { System.out.println("This C"); } }
package com.interfaces; public class D { public A a; public D(){ super(); } public D(A a) { this.a = a; } public static void main(String[] aegs) { try { //反射创建对象 A s = (A)Class.forName("com.interfaces.C").newInstance(); s.test(); A b = new B(); A c = new C(); D d = new D(b); d.mainTest(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public void mainTest() { a.test(); } }