多态:指为不同数据类型的实体提供统一的接口。同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果。
这是对于多态的解释,现在把这句话进行拆解理解它在代码上的体现,我们把第一句话“为不同数据类型的实体提供统一的接口。”在代码上的体现就是在下面静态方法中的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这个类中的方法进行的是减法运算,当我们父类的引用指向不同的子类时,使用相同的方法得到的结果是不相同的。