我正在阅读一本关于多态性和接口的C++书籍的在线摘录。这本书对多态性和接口进行了区分,并详细说明了如何在C++中实现它们。但是,我一直认为C++中的接口(使用具有纯虚函数的基类实现)只不过是多态的应用程序。我想知道多态性和接口之间的明确区别,因为摘录把我搞糊涂了。
发布于 2014-01-28 15:51:29
多态性是以统一的方式处理多种类型的抽象概念,接口是实现该概念的一种方式。与接口交互的代码可以与提供该接口的任何类型交互。
请注意,C++具有(至少)两种形式的多态性:通过虚函数正式定义的接口实现的动态(即运行时)多态性,以及通过使用模板参数非正式定义的接口实现的静态(即编译时)多态性。
发布于 2014-01-28 15:51:18
典型的C++接口利用虚函数和多态性来提供实际实现。但是多态性涵盖了很多其他的东西,那就是“不是接口”。
接口是一个基类,可用于传递回接受该接口的对象的类。在某些情况下,一个类可能提供多个接口:
class MyClass: public InterfaceGUI, InterfaceAudio
{
....
};
在这里,MyClass
提供了一个同时与图形用户界面和音频接口接口的类。这是一个多重继承的例子。
另一方面:
class Animal
{
int numLegs;
public:
Animal(int nLegs): numLegs(nLegs) {}
};
class Dog : public Animal
{
Dog() : Animal(4) { }
};
在这里,Animal
不是一个纯粹的接口类,因为它实现了一些功能,这通常不是一个好的接口设计。
发布于 2014-01-28 16:18:48
我对polymorphism
和Interface
概念的理解如下:
Polymorphism
只不过是一种以上的形式(根据所有书籍)。但是,根据面向对象的思想,当你将它与现实生活联系起来时,你就会知道,Polymorphism
只不过是一种以上的形式,具有相同的名称或某种其他性质,但具有自己的专利性质,这是任何人都没有的。根据编程:一个具有相同名称但不同参数的函数(编译时多态性)和一个用于here解释的运行时多态性的虚拟函数
Check this Example
接口描述C++类的行为或功能,但不提交该类的特定实现。
C++接口是使用抽象类实现的,这些抽象类不应该与数据抽象混淆,数据抽象是一个将实现细节与相关数据分开的概念。
为此,我们使用Pure Virtual function
作为参考,您可以通过此Link
例如,您可以使用Mats Petersson解释
希望这篇文章能帮助你理解基本的senario。
https://stackoverflow.com/questions/21399498
复制相似问题