提到了多态,那么我们首相应该想到的是封装和继承,它们三者之间的关系,我们可以是:封装→继承→多态。
首先来看这一版代码,作者把四个运算方法写到了一个方法中,说明他没有做到抽象,此时如果我要再加一种新的运算方法呢,那就只能修改这个方法中的代码,再加一层switch。
接下来再看这一版,作者把四个运算方法分别封装到了各个类中,抽象出来一个运算类,这样我们再想添加一种新的运算方法是不是就会变得很容易呢,不需要修改原来的代码,我们直接新写一个子运算子类来继承Operation这个运算类就可以了。
大家再看一下这段代码,其中首先声明了一个引用变量oper,其次在下面的switch中传入不同的case中的内容来决定oper这个引用变量具体指向的哪个子类的对象。
这也就对应了多态这个概念中的为不同的数据类型的实体提供统一的接口,不同的数据类型实体指的就是各个case中的new Operationxx();
以上代码就是对应多态中的,同一操作拥有不同的解释,产生不同的执行结果。