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

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

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

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

什么场景下用接口呢?

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

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

#include <string>
#include <iostream>

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 "<<name<<endl;
    }
};

int main() {
    People people;
    people.getName("hello");
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值