子类被接口实例化后,调用被子类覆写过的方法,但是存在一个问题:
主方法实际上相当于一个客户端,如果此时需要更换一个子类,则必须修改主方法。
JVM原理:所有的程序只认JVM,每个JVM会根据所在的操作系统不同自动进行设置。 即程序--JVM--操作系统。
所以我们可以类似地,在接口和具体子类间加入一个过渡端,通过此过渡端取得接口实例。一般这个过渡端为工厂类。
class Factory{
public static Fruit getInstance(String className){
Fruit f = null;
if("apple" .equals(className)){
f = new Apple();
}
return f;
}
};
public class FactoryDemo {
public static void main(String[] args){
Fruit f = null;
f = Factory. getInstance("apple");
f.eat();
}
}