多态:指为不同数据类型的实体提供统一的接口。同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果。
这是对于多态的解释,现在把这句话进行拆解理解它在代码上的体现,我们把第一句话“为不同数据类型的实体提供统一的接口。”在代码上的体现就是在下面静态方法中的switch选择结构中的为oper这个变量赋值的语句,就是在不同数据类型的实体提供了统一的接口,
public class OperationFactory {
public static Operation createOperate(String Operate) throws Exception {
Operation oper=null;
switch(Operate){
case "+":
oper=new OperationAdd();
break;
case "-":
oper=new OperationSub();
break;
case "*":
oper=new OperationMul();
break;
case"/":
oper=new OperationDiv();
break;
default:
throw new Exception("没相关计算形式");
}
return oper;
}
}
那么第二句话“同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果。”
这里我们可以看到两张图片中都有一个getResult()方法,但是对应的方法实现都是不一样,比如Add这个类中的方法进行的是加法运算,而Sub这个类中的方法进行的是减法运算,当我们父类的引用指向不同的子类时,使用相同的方法得到的结果是不相同的。