C/C++、Java、Go、Python总结对比31-接口-c++

面向对象的语言基本上都可以实现接口。c++中,没有特定的关键词来定义接口类,但是可以间接来实现。

既然有抽象类,为什么要用接口呢?

接口带来的最大好处就是避免了多继承带来的复杂性和低效性,并且同时可以提供多重继承的好处。接口和抽象类都可以体现多态性,但是抽象类对事物进行抽象,更多的是为了继承,为了扩展,为了实现代码的重用,子类和父类之间体现的是is-a关系;接口则更多的体现一种行为约束,一种规则,一旦实现了这个接口,就要给出这个接口中所有方法的具体实现,也就是说实现类对于接口中所有的方法都是有意义的。

什么场景下用接口呢?

在设计类的时候,首先考虑用接口抽象出类的特性,当你发现某些方法可以复用的时候,可以使用抽象类来复用代码。简单说,接口用于抽象事物的特性,抽象类用于代码复用。

下面先来看下c++中接口的间接实现:

#include 
#include 

using namespace std;
//定义接口类
class InterfaceDemo {
public:
    //定义纯虚函数
    virtual void getName(string name) = 0 ;  //后面要加=0
};
//继承接口类
class People: public InterfaceDemo {
public:
    void getName(string name) {  //重写虚函数
        cout<<"name is "<

通过上面可以看出来,其实在c++中抽象类和上文实现的接口差别不大,无非就是抽象类可以定义静态变量和方法的实现。接口中一般只将公用的方法抽象出来。

你可能感兴趣的:(C/C++、Java、Go、Python总结对比31-接口-c++)