C++ 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。本文主要介绍C++ 接口(抽象类)。

接口与抽象类

C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。

如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的。在 C++ 语言中没有抽象类的概念,可通过纯虚函数来实现抽象类。纯虚函数是指只定义原型的成员函数,如果一个 C++ 类中存在纯虚函数便就成为了抽象类。

例如,

#include <iostream>
using namespace std;
class Shape
{
public:
    virtual double area() = 0;
};
class Rect : public Shape
{
    int ma;
    int mb;
public:
    Rect(int a, int b)
    {
        ma = a;
        mb = b;
    }
    double area()
    {
        return ma * mb;
    }
};
class Circle : public Shape
{
    int mr;
public:
    Circle(int r)
    {
        mr = r;
    }
    double area()
    {
        return 3.14 * mr * mr;
    }
};
void area(Shape* p)
{
    double r = p->area();
    cout << "r = " << r << endl;
}
int main()
{
    Rect rect(1, 5);
    Circle circle(10);
    area(&rect);
    area(&circle);
    return 0;
}

注意:

1) “= 0”是用于告诉编译器当前是声明纯虚函数,因此不需要定义函数体。

2)抽象类用于描述现实世界中的抽象概念,抽象类只能被继承而不能创建对象。

3)在 C++ 中没有抽象类的概念,是通过纯虚函数来实现抽象类。

4)类中只存在纯虚函数的时候才能成为接口。

5)接口是一种特殊的抽象类。


推荐文档