抽象类和接口

Posted zsy12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类和接口相关的知识,希望对你有一定的参考价值。

抽象类:

  1. 表示现实世界的抽象概念(动物对于猪)

  2. 不能用来创建对象,只能用来定义类型或则继承并重写相关函数或指针

  3. 抽象类内部函数没有具体实现

抽象类的实现:

  1. 当类中定义了纯虚函数,这个类就是抽象类。

  2.纯虚函数是只定义了函数声明的虚函数

抽象类语法:

class picture       // 抽象类
{
public:
    virtual double area() = 0;   // 纯虚函数
};

 

抽象类的多态:

#include <iostream>
#include <string>

using namespace std;

class animal       // 抽象类
{
public:
    virtual void which_kind() = 0;   // 纯虚函数
};

class  cow : public animal  // 继承抽象类
{
public:
    void which_kind()
    {
     cout <<  "cow !" << endl;
    }
};

class sheep : public animal // 继承抽象类
{
public:
    void which_kind()
    {
     cout <<  "sheep !" << endl;
    }
};

void which_kind(animal* p)  // 抽象类可以定义指针
{
    p->which_kind(); 
}

int main()
{
    cow c;
    sheep s;
    which_kind(&c);  // 抽象类也具有多态性
    which_kind(&s);    
    return 0;
}

 

注意:

  1. 子类必须实现全部继承的抽象类的的纯虚函数,否则子类也将是抽象类

  2. 纯虚函数被重写后变成虚函数

 

 

接口:

  1. 类中没有定义任何成员变量

  2. 类中函数全是公有函数并且全是纯虚函数

  3.接口是一种特殊的抽象类

#include <iostream>
#include <string>

using namespace std;

class Channel
{
public:
    virtual bool open() = 0;
    virtual void close() = 0;
    virtual bool send(char* buf, int len) = 0;
    virtual int receive(char* buf, int len) = 0;
};

int main()
{
    return 0;
}

 

以上是关于抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

聊聊抽象类和接口

抽象类和接口的异同

抽象类和接口在一起?

java 抽象类和接口的差别

抽象类和接口

Java学习笔记—抽象类和接口