同样的方法调用而执行不同操作、运行不同代码。
多态通过分离做什么和怎么做,从另一个角度将接口和实现进行分离。
多态消除了类型之间的耦合关系。
LSP(Liskov替换原则):子类型必须能够替换掉它们的基类型。
多态的概念基于对象引用的动态绑定特性。
多态实现过程:
1. 子类重写父类的方法;
2. 代码中向父类型变量发出消息(静态绑定---编译期);
3. 运行时,根据变量实际引用的对象类型决定调用哪个方法(动态绑定---运行期)。
动态绑定是多态现象的根源。
虚函数与抽象类。
class Animal{
virtual ~Animal();
virtual void makeSound();
};
纯虚函数与接口类。接口类不能实例化,不能生成对象实例。
class Animal{
virtual ~Animal() = 0;
virtual void makeSound() = 0;
};