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();
}
}