public interface Plugin{
void tranferString(String str);
//void setApplication(Application app);
}//接口中
public class Application {
private Plugin plugin;
public Application(Plugin p){
this.plugin=p;
p.tranferString("the String from father");
}
}
实现接口类
Java code
public class Mainapp implements Plugin{
public void tranferString(String str){
System.out.println(str);
}//这里,str没有赋值,可是系统华丽的把那一句话打印出来了。
public static void main(String[] arc){
new Application(new Mainapp());
}
}
典型的多态原理:根据多态性,Mainapp本质就是Plugin的子类,而Application的构造函数的参数是父类Plugin,因为你在main函数里有这么一句new Application(new Mainapp());
即用了子类Mainapp来实例化了Application构造函数的参数,根据多态性原理可知,当执行Application构造函数中的p.tranferString("the String from father")时,此时p这个引用会在运行时指向plugin的子类Mainapp,,进而也就调用了子类Mainapp的tranferString方法。
其实关于接口,可以完全理解为一个类,一个抽象父类,所以它也遵从多态性原理。