接口类简介:

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

用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. 【GO基础】main redeclared in this block问题的排查与解决

    之前的GO练习环境放在虚拟机内,方便了不少.不过在liteIDE打开的情况下,我迁移了虚拟机,刚好两台机子的VMware版本还不同,这就导致了无法恢复挂起状态,我放弃了挂起. 重新启动后,为了继续练习 ...

  2. jquery multi-select 实例demo

    运行效果: 其他的不多说了,都是用的jquery.multiSelect.js组件实现的,直接看代码吧 代码下载地址: http://download.csdn.net/detail/ajavabir ...

  3. 多线程学习笔记八之线程池ThreadPoolExecutor实现分析

    目录 简介 继承结构 实现分析 ThreadPoolExecutor类属性 线程池状态 构造方法 execute(Runnable command) addWorker(Runnable firstT ...

  4. 多线程学习笔记四之Condition实现分析

    目录 简介 等待队列 nextWaiter 源码分析 await() signal() signalAll() 总结 简介   在使用内置锁synchronized时,通过调用java.lang.Ob ...

  5. 重写对象ToString方法

    重写对象ToString方法,引入Newtonsoft.Json public override string ToString() { JsonSerializerSettings settings ...

  6. QQ和微信一键加群加好友代码

    QQ和微信一键加群加好友链接代码实现. 1.QQ加群加好友链接(借助腾讯QQ群推广链接和加好友链接实现) (1).加群技术链接: http://qun.qq.com/join.html (2).加好友 ...

  7. 研究table-cell和overflow

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

  8. 使用 IntraWeb (11) - 基本控件之 TIWButton

    所在单元及继承链: IWCompButton.TIWButton < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl & ...

  9. 使用 Spring 2.5 注释驱动的 IoC 功能(转)

    基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置 Bean.装配 Bean 的功能,您可以使用基于注释的 Spring IoC 替换 ...

  10. STM32F4xx -- Cortex M4

    STM32F4xx official page: http://www.st.com/internet/mcu/subclass/1521.jspIntroductionFPU - Floating ...