目录
1. 多态
1.1 什么是多态
态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
多态可以理解为”一种接口,多种状态“,只需要编写一个函数接口,根据传入的参数类型,执行不同的策略代码。
在面向对象编程中,我们通常将多态分为两种类型:静态多态(静态多态,也被称为编译时多态)和动态多态(动态多态,也被称为运行时多态)。
静态多态
● 静态多态是指在编译时就能确定要调用的函数,通过函数重载、运算符重载、模板来实现。
动态多态
● 动态多态是指在运行时根据对象的实际类型来确定要调用的函数,通过继承和函数覆盖来实现。
静态多态与动态多态的区别:
- 静态多态发生在编译时,因为在编译阶段编译器就可以确定要调用的函数。
- 动态多态发生在运行时,因为具体要调用那个函数是在程序运行时根据实际的对象类型来确定的。
多态的优缺点:
- 多态的优点:多态的优势包括代码的灵活性、可扩展性和可维护性。它能够使代码更具通用性,减少重复代码的编写,并且能够轻松地添加新的派生类或扩展现有的功能。
- 多态的缺点:多态的缺点包括代码的复杂性、运行效率、易读性。当类的继承关系复杂时,理解和维护多态性相关的代码会变得困难。动态多态在运行中会产生一些额外的开销。
多态的使用具有三个前提条件:
● 公有继承
● 函数覆盖
● 基类的引用/指针指向派生类的对象
1.2 函数覆盖
函数覆盖、函数隐藏。这两个比较相似,但是函数隐藏不支持多态,而函数覆盖是多态的必要条件之一。