OC面试题:什么是多态

40 阅读2分钟

一、多态是什么?

多态的本质是子类通过覆盖或重载父类的方法,来使得对同一类对象同一方法的调用产生不同结果。简单来说,就是父类指针指向子类对象

二、多态的原理

1.动态绑定
  1. 动态绑定
  2. 动态类型能使程序直到执行时才确定对象的真实类型
  3. 对态类型绑定能使程序直到执行时才确定要对那个对象调用的方法
2.多态条件
  1. 有继承关系
  2. 子类重写父类方法
  3. 父类指针指向子类对象
3.程序中的表现

父类指针指向不同子类对象的时候,通过父类指针调用被重写的方法的时候,会执行该指针指向的那个对象的方法。

4.多态的优点

多态的主要好处是简化了编程接口,他允许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字,这样,编程接口就是一些抽象的行为集合,从而和实现接口的类区分开来。

多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象,这样使得代码扩展性和复用性特别好,当一个新的情景出现时,只需要增加一个新的类和新的同名方法。

三、注意事项

父类能调用子类的方法吗?

1.同名方法一定可以调用

2.如果子类并没有这个方法,即使强制类型转换也不能调用

四、指针变量的强制类型转换

这种强制转换只是改变了指针变量的编译时类型,但是该变量所指对象的实际类型不会发生改变

五、多态的条件

1. 继承

2. 重写

3. 指向

合理运用类的多态性可以降低代码的耦合度让代码更易扩展