接口/时钟/PLL
类与接口是两个概念,不能混淆。
程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务。面向过程语言最基本的单元是过程和函数。
接口,通俗的来说就是完成某个操作的一个概念,里面可以定义函数 方法,实现接口后,重写完成某个操作具体代码操作。就是将类内部进行分类。对于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个需要一个功能,也就是说不是所有的子类都需要此功能,那么就可以把次功能放到一个接口里,各子类进行单独的实现。
接口为了更好的约束子类。
实现信息封装(数据成员和成员函数,)的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
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
{
//定义方法,使之成为类或可直接调用的函数
}
全部0条评论
快来发表一下你的评论吧 !