c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别
描述
接口与类的关系
类与接口是两个概念,不能混淆。
接口概念
程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务。面向过程语言最基本的单元是过程和函数。
接口,通俗的来说就是完成某个操作的一个概念,里面可以定义函数 方法,实现接口后,重写完成某个操作具体代码操作。就是将类内部进行分类。对于map对象,我们可以做好几个接口,这些接口中定义不同功能的方法,函数和属性,map类实现这些接口,这样我们可以使用接口定义,实现对象。因此,所谓接口就是一系列相关方法与属性集合的定义。
接口不局限于是一个关键字,而是一组设计思想:
· 把待开发对象的接口理清楚,就决定了你对需求的理解程度和设计方案的方向正确性,其实就是需求分析和概要设计,它也同时决定了测试设计的质量。
· 把对象的内部接口理清楚(划分模块,理清它们之间的交互),决定了方案的实现,其实就是详细设计和编码的工作。
· 代码写乱了,已经难以理解了,这时要使用接口分离,这叫重构。
怎样才能把接口描述清楚呢?描述接口有两个重点,称为2P:一是协议(Protocol),二是原型(Prototype),它们分别描述了交互的方式与内容。协议说的是,调用方和被调用方是怎样交互的,比如基于HTTP协议,请求参数用urlencoded格式,返回内容用JSON格式;原型描述的是一个请求的内容,调用名称,参数和返回内容是什么含义,以及类型。
大到软件工程,小到编写个去后台获取订单列表的函数,多半的时间都花在确定接口和实现接口上。
接口使用目的:抽象类所拥有的共性,也可以概括为:为了多态。
特点:
1.接口中只能包含方法。(方法、属性、索引器、事件)
2.接口中的方法不能有任何实现
3.接口中的成员不能有任何访问修饰符(哪怕是public)
4.接口不能被实例化
5.实现接口的类,必须实现接口的所有成员(这里跟抽象类一样)
6.类不能多继承,所以在某些情况下,只能用接口来代替。接口可以多实现(一个类可以继承多个接口,而只能继承一个类)
7.接口的主要目的就是为了实现多态
8.当一个类,同时继承了某个类,并且也实现了某些接口的时候,必须要将继承的类写在第一个(如果一个类同时继承了父类和接口的时候,要把父类写在最前面)
9.当多个类,都具有某个或某几个功能时(方法),但是这几个类型又不属于相同的系列(这几个类型没有共同的父类,就不能用抽象类。),所以这时,为了实现多态就可以考虑把这几个类型共有的方法提取到一个接口中,让这几个类型分别实现该接口
10.当父类实现接口,子类继承父类。那么 接口就可以引用子类
11.不要在一个接口中写过多的方法,避免造成接口污染。可编写多个接口,在每个接口中,分别定义方法
12.实现接口方法的时候,不要有override关键字,直接跟平常定义一样
13.接口方法的显示实现,如果多个接口里有相同的方法名。那么第一个方法名默认的引用的是排在最前面的接口,如果要使用后面接口的方法,就要显示实现:接口名。方法名。访问修饰符是private
什么时候把方法放到父类中 还是接口里:
当一个父类派生出5个子类时,所有子类中只有3个需要一个功能,也就是说不是所有的子类都需要此功能,那么就可以把次功能放到一个接口里,各子类进行单独的实现。
接口为了更好的约束子类。
类(Class)的定义
实现信息封装(数据成员和成员函数,)的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
类与类,类与接口,接口与接口的关系
a:类与类 *继承关系
只能单继承,可以多层继承
b:类与接口 *实现关系
类可以单实现,也可以多实现 ,并且还可以在继承一个类的同时实现多个接口。接口不能被实例化,主要目的就是为了实现多态。一个类只能有一个父类,一个接口可以继承多个接口 ,接口中的方法都是抽象方法(没有方法体) 。
c:接口与接口 *继承关系
可以单继承,可以多继承
[java]
view plain copy
interface interA{
public abstract void printA();
}
interface interB{
public abstract void printB();
}
interface interC extends interA,interB{}
class demo3 implements interA,interB{
//接口打破了java中的单继承
public void printB() {
// TODO Auto-generated method stub
}
public void printA() {
// TODO Auto-generated method stub
}
}
类的三大特性
封装性
将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。
继承性
继承性更符合认知规律,使程序更易于理解,同时节省不必要的重复代码。
多态性
同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法
类的分类有:抽象类(abstract)、密封类(sealed)、静态类(static)
用法
定义一个类
class类名
{
public:
公有成员
private:
私有成员
protected:
保护成员
};
公有成员、私有成员、保护成员均包含数据成员和成员函数两部分,彼此没有顺序之分。一个public/private/protected关键字下可以跟多个成员,直到下一个public/private/protected关键字。如果成员前面没有public/private/protected关键字,默认为私有成员。
结尾部分的分号必不可少,否则会发生编译错误。
无论公有成员、私有成员还是保护成员,彼此之间都可以访问。比如公有的成员函数可以操作保护的数据成员,也可以调用私有的成员函数。
类的数据成员是类型,所以不能被赋值,声明数据成员和声明普通变量的格式相同,比如“int n;”。
#p##e#
接口函数和调用函数有什么区别
接口函数
接口函数就是某个模块写了(主要)给其它模块用的函数。简单的说接口函数就是类中的公有函数。
例如:
SendMessage(。..); 是一个发消息的函数,我们无须知道它是怎么实现的,只需要知道他能实现向某个东西发送消息即可
这就是接口,接口对应的就是实现。
举个例子,接口就是搅拌机,把苹果,橘子。梨(参数)放进去(发送消息)就出来果汁(结果,返回值)了。
class 搅拌机
{
private:
零件;
public:
饮料 搅拌(水果); // 这个就是接口
};
int main(void)
{
搅拌机 A = new 搅拌机;
饮料 苹果汁 = A-》 搅拌(一个黄元帅,两个红富士); // 调用接口
delete A;
return 0;
}
调用函数
计算机编译或运行时,使用某个函数来完成相关命令。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
一般形式
在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。
C语言中,函数调用的一般形式为:
函数名(实际参数表)
对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
接口函数和调用函数是有区别的,例如:APP_int()是接口函数,APP_call()是可直接调用的函数。接口函数要重定义方法才能被调用,调用函数可理解为已经重写方法的接口函数,APP_call()是可直接调用的函数这个就不用说了,假设APP_int()是接口函数 ,里面就有一个未实现方法要通过下面来实现。
如:
class tempa extends APP_init
{
//定义方法,使之成为类或可直接调用的函数
}
打开APP精彩内容
点击阅读全文
c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别相关推荐
- 119.编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输入
计算下列级数之和 题目:编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输入 效果 讲解 代码 题目:编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输 ...
- The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数
13 Rust语言中的函数式语言功能:迭代器与闭包 函数式编程风格通常包括将函数作为另一个函数的参数.返回值,将函数作为值赋值给变量,以供后续执行 本章中我们将会介绍以下内容: 闭包:一个可以存储在变 ...
- python中函数的定义_Python函数是什么_如何定义和调用函数?
函数是什么? 本节Python培训教程是要大家认识一个"老朋友"--函数. 与数学中的函数不同,在Python中,函数不是看上去冰冷无聊的规则和公式,而是实打实的.有自己作用的代码 ...
- 二元函数可微与可导的关系_如何理解多元函数可微与可偏导的关系?
原标题:如何理解多元函数可微与可偏导的关系? 谈到多元函数可微与可偏导时,相信不少人头皮有点发麻.一元函数中,可微与可导是等价的,但是在多元函数中,可微与可偏导之间的关系就没那么简单了,这是为什么呢? ...
- c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node)); 和 Node p 两个有什么区别??? Node是一
(来自百度解答) Node *p是定义一个Node结构体指针,指针名为p,指向一个Node结构体,并为这个结构体分配了内存空间 该结构体无命名 Node p是定义一个Node结构体,结构体名为p. 追 ...
- 把接口调用打成jar包的类怎么写_直观讲解RPC调用和HTTP调用的区别
来源 :浮生忆梦 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~N ...
- c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#
最近,我被要求实现一个类作为选择过程的一部分.我按要求做了这个节目.但是,我考试不及格.我真的很想知道我的解决方案出了什么问题.任何帮助都非常感谢.问题和我的解决方案如下 实现一个线程安全类,该类在构 ...
- c语言中 程序各步作用,c程序的上机执行过程_上机运行C程序的步骤与方法
描述 C语言是在国内外广泛使用的一种计算机语言.C语言功能丰富.表达能力强.使用灵活方便.应用面广.目标程序效率高.可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写软件. ...
- 二元函数可导与可微的关系_多元函数中可微与可导的直观区别是什么?
在多元的情况下,可微可导的关系要比在一元情况下复杂,但是只是要复杂一些,如果我们从一元开始去理解,你会发现并不困难. 这篇文章主要阐述以下三个概念:偏微分 偏导数 全微分 全导数这里暂时不讲,看名字好 ...
最新文章
- Keras图数据学习
- BCH半月热点事件回顾
- 【Interfacenavigation】选择时间/日期组件(34)
- OpenGL初学时遇到的一些常见的函数之解析
- 小学计算机课的活动设计方案,小学信息技术兴趣小组活动策划书三篇
- IE8兼容性问题的解决方案
- mysql传入乱码_mysql 插入中文乱码解决方案 --转了
- 高中职业学校计算机专业题,职业高中高考计算机专业试题3.doc
- 零基础转行自学前端,怎么学习更系统?
- 初三下半年应该怎样合理的学习?
- Linux修改后保存与不保存,强制退出vi与vi下查找命令关键步骤!
- linux chroot_Linux中chroot命令的实用指南
- Redis详细安装教程与启动redis
- 华为设备配置MAC地址漂移检测
- 信息爆炸,物质丰富,你不得不知的奥卡姆剃刀原则
- EMC共模干扰处理,共模扼流圈的应用和选型。
- 2020区块链行业回顾与前瞻
- 快手协议/逆向开发ks协议
- Flash与服务器通信简介
- python扫雷 高级算法_Python玩转算法—扫雷
热门文章
- Spring Boot支付宝集成手机网站支付
- Cisco交换机基础命令
- Liunx基础命令 - which命令
- 群雄逐鹿 互联网家装市场烽烟四起
- 基于esp8266主控和OLED显示的迷你答题装置
- echarts力导向图节点连线动画_D3.js 力导向图的显示优化(二)- 自定义功能
- 502 Bad Gateway出现的原因以及解决思路
- org.apache.xmlbeans.impl.values.XmlValueDisconnectedException: null
- 达梦数据库迁移教程(Mysql迁移到达梦数据库)
- 啊哈哈哈,2023年Python学习清单来喽;这清单都上齐了,怎么不收藏啊