接口类简介:

接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。

用c++实现接口类时需要注意一下几点:

1、接口类中不应该声明成员变量,静态变量。

2、可以声明静态常量作为接口的返回值状态,需要在对应的cpp中定义并初始化,访问时需要使用"接口类型::静态常量名"访问

2、定义的接口方法使用virtual 修饰符 和 “=0” 修饰,表示该方法是纯虚的。

3、因为接口类是无法创建对象的,所以不应该编写构造函数和析构函数

IShape.h

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

IShape.cpp

#include "ishape.h"

const int IShape::MIN_AREA = ;

IAction.h

#ifndef IACTION_H
#define IACTION_H class IAction
{
public:
virtual void run() = ;
}; #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 ;
}

执行效果:

参考:

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

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

c++ 如何编写接口类(interface)的更多相关文章

  1. PHP接口类interface的正确使用方法

    对于那些初学PHP语言的人来说,对于PHP的接口类也许了解的还不是很深入,接下来我们就来具体讲述PHP接口类interface的使用方法. 如何正确运用PHP XMLReader解析XML文档 深入解 ...

  2. PHP的接口类(interface)和抽象类(abstract)的区别

    <?php /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么 ...

  3. PHP接口类interface使用方法

    PHP同大多数的面向对象语言一样,并不支持多重继承.少数支持多重继承的语言中最著名的就是C++和Smalltalk.如果需要实现多重继承功能,在PHP中,可以通过接口,它是PHP解决多重继承问题的方法 ...

  4. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  5. Python--抽象类接口类

    一. 继承有两种用途: """ 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了 ...

  6. python之路----继承的抽象类和接口类

    抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

  7. Python抽象类和接口类

    一.抽象类和接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) ...

  8. [ python ] 接口类和抽象类

    接口类 继承有两种用途:1. 继承基类的方法,并且做出自己的改变或者扩展(代码重用)2. 申明某个子类兼容于某基类,定义一个接口类interface,接口类定义了一些接口名且未实现接口的功能,子类继承 ...

  9. python 抽象类和接口类

    一.接口类 继承的两种用途: 1.继承基类的方法,并且做出自己的改变或者扩展(代码重用) 2.声明某个子类兼容于某个基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数 名)  ...

随机推荐

  1. poj-2421-最小生成树刷题

    title: poj-2421-最小生成树刷题 date: 2018-11-20 20:30:29 tags: acm 刷题 categories: ACM-最小生成树 概述 做了几道最小生成树的题, ...

  2. 利用cve-2017-11882的一次渗透测试

    利用工具:https://github.com/Ridter/CVE-2017-11882/ 影响版本: office 2003 office 2007 office 2010 office 2013 ...

  3. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) A. Neverending competitions 水题

    A. Neverending competitions 题目连接: http://codeforces.com/contest/765/problem/A Description There are ...

  4. Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C. Destroying Array 带权并查集

    C. Destroying Array 题目连接: http://codeforces.com/contest/722/problem/C Description You are given an a ...

  5. css卷叶效果

    <!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...

  6. HDU 3979 Monster (贪心排序)

    Monster Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法

    最近开始使用VS2010,在引用COM组件的时候,出现了“无法嵌入互操作类型……,请改用适用的接口”的错误提示. 查阅资料,找到解决方案,记录如下: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌 ...

  8. kettle的基本介绍

    Kettle 主要内容: 一.ETL介绍 二.Kettle介绍 三.Java调用Kettle API 一.ETL介绍 1. ETL是什么? 1).ETL分别是“Extract”.“ Transform ...

  9. 微信图片生成插件,页面截图插件 html2canvas,截图失真 问题的解决方案

    html2canvas 是一个相当不错的 JavaScript 类库,它使用了 html5 和 css3 的一些新功能特性,实现了在客户端对网页进行截图的功能.html2canvas 通过获取页面的 ...

  10. css的浮动

    浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 一 css的浮动 CSS提供了元素对 ...