c++ 如何編寫接口類(interface)


接口類簡介:

        接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應該是抽象的,需要由具體的類去實現,然后第三方就可以通過這組抽象方法調用,讓具體的類執行具體的方法。

用c++實現接口類時需要注意一下幾點:

1、接口類中不應該聲明成員變量,靜態變量。

2、可以聲明靜態常量作為接口的返回值狀態,需要在對應的cpp中定義並初始化,訪問時需要使用"接口類型::靜態常量名"訪問

2、定義的接口方法使用virtual 修飾符 和 “=0” 修飾,表示該方法是純虛的。

3、因為接口類是無法創建對象的,所以不應該編寫構造函數和析構函數

IShape.h 

#ifndef ISHAPE_H
#define ISHAPE_H
 
 
class IShape
{
public:
    virtual int area() = 0;
    static const int MIN_AREA;
};
 
#endif // ISHAPE_H

 

IShape.cpp

#include "ishape.h"
 
const int IShape::MIN_AREA = 0;

 

IAction.h

#ifndef IACTION_H
#define IACTION_H
 
 
class IAction
{
public:
    virtual void run() = 0;
};
 
#endif // IACTION_H

 

Bird.h

#ifndef BIRD_H
#define BIRD_H
 
#include "iaction.h"
#include "ishape.h"
 
 
 
class Bird : public IShape, public IAction
{
public:
    Bird();
    ~Bird();
 
    // IAction interface
public:
    void run() override;
 
    // IShape interface
public:
    int area() override;
 
 
};
 
#endif // BIRD_H

 

Bird.cpp

#include "bird.h"
 
#include <iostream>
 
Bird::Bird()
{
    std::cout<<"小鳥出生了"<<std::endl;
}
 
Bird::~Bird()
{
    std::cout<<"小鳥掛掉了"<<std::endl;
}
 
void Bird::run()
{
    std::cout<<"小鳥飛呀飛呀"<<std::endl;
}
 
int Bird::area()
{
    std::cout<<"小鳥的形狀像小雞仔的形狀"<<std::endl;
    std::cout<<IShape::MIN_AREA<<std::endl;            //這里訪問常量是注意
}

 

main.cpp

#include "bird.h"
 
void doRun(IAction *object)
{
    object->run();
}
 
void getArea(IShape *object)
{
    object->area();
}
 
int main()
{
    Bird *bird = new Bird();
    doRun(bird);
    getArea(bird);
    delete bird;
    return 0;
}

 

執行效果:

 

參考:

https://www.cnblogs.com/lx753932159/p/5464406.html

https://blog.csdn.net/netyeaxi/article/details/80724557

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM