在C++ Primer这本书中,作者写道:“面向对象编程的关键思想是多态性”。我不确定我理解作者的意思。那么其他重要的东西呢:抽象、继承等等。请有经验的人详细解释一下。
编辑: 我不是在问“什么是多态性”。我在问“为什么多态性是面向对象编程的关键?为什么不是继承?”
编辑: 我不是在问“什么是多态性”。我在问“为什么多态性是面向对象编程的关键?为什么不是继承?”
我不确定这是面向对象编程的关键。那只是某些人的看法。
我认为有四个关键:抽象数据类型、封装、继承和多态。它们是相互关联的。
每个想法都依赖于之前的想法。ADT是唯一能够独立存在的。封装需要ADT。多态需要继承。
多态有助于消除if、switch和case语句。您不必根据对象类型编写代码来确定要执行的操作;虚拟表格只需在幕后调用正确的方法即可。
当类B继承自A时,类B可以被强制转换为A——也称为多态性。因此,继承直接允许多态性。
当A实现接口I*something*时,A可以作为I*something*漫游,这也称为多态性。因此,接口使多态性成为可能。
抽象:抽象类只是另一个不能被实例化并充当基类(通常)的类。非抽象子类可以被强制转换为抽象类,从而实现多态性。
因此,事实上,大多数面向对象编程的概念都可以看作是多态性,正是由于这个原因,作者可能会这样说。