编译时多态 与 运行时多态

在了解什么是编译时多态 与 运行时多态前,我们先了解下什么是多态


多态

 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不面向对象的。
 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

多态的作用:
  把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,抽象出一个通用的逻辑关系,以此来适应不同的业务需求。


编译时多态 与 运行时多态

  多态分为两种情况:编译时多态与运行时多态。编译时多态:即在编译时就能够确定调用哪个方法。而运行时多态则相反,只有在运行时才能确定调用哪个方法。
  下面我们来介绍下,编译时多态 和 运行时多态在重载 和 重写上的区别。

  • 在方法重载时,都是编译时多态。在编译期可根据参数的数据类型、个数以及次序来确定调用方法
  • 在方法重写中,当子类对象引用自身类实例方法时,为编译时多态。但是当父类对象引用子类实例方法时(也就是上转型对象时,父类声明,子类实例化),为运行时多态,因为此时只有在运行时才可以去匹配到对应方法进行调用。

参考链接:

  • 多态
  • https://blog.csdn.net/weixin_43951932/article/details/88891517
  • https://blog.csdn.net/why_still_confused/article/details/51295707

你可能感兴趣的:(编译时多态 与 运行时多态)