1.什么是多态
**概念:**多态是指为不同数据类型的实体提供统一的接口(不同类型的实体指的是各个子类类型,统一的接口是父类指向子类的对象)
同一操作作用于不同的对象可以有不同的解释,产生不同的结果
多态,作为面向对象三大特征之一。通俗来说,如果我们现在有一个Animal类,类中有一个名为Shot()的抽象方法,Animal作为父类,而Dog、Cat继承了Animal,作为Animal的子类,分别实现了Shot方法,展现出了“猫叫”“狗叫”的不同状态。当然Animal的子类可以有多个,同一个“Shot”的行为展现出的是不同的叫声(不同的叫的状态),这就是多态的体现。
代码对应:
不同的数据类型(不同数据类型的对象,四个数据类型(OperationAdd、OperationSub、OperationMul、OperationDiv四个类的名称)),计算机里所有的对象都是数据,所有的数据都是对象。在上图的代码中,第一行的operFactory是AddFactory类型的实体,同时,AddFactory作为加法工厂,还可以替换成减、乘、除,operFactory对应成了相应的类型,
AddFactory()类型可以替换,而第二行 Operation oper = operFactory.CreateOperation();是没有变化的,CreateOperation是不同的类型的父类提供的统一的接口
系统根据对象所属的类别(±*/),引发对应类别的方法
OperationAdd\OperationSub\OperationMul\OperationDiv分别是不同数据类型的实体,它们都指向了oper(统一的接口)
2.子类对象指向父类引用,父类引用指向子类对象两种不同的实现方式