接口与类的关系_接口函数和调用函数有什么区别

接口与类的关系_接口函数和调用函数有什么区别,第1张

接口的关系

类与接口是两个概念,不能混淆。

接口概念

程序接口是 *** 作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求 *** 作系统提供服务。面向过程语言最基本的单元是过程和函数。

接口,通俗的来说就是完成某个 *** 作的一个概念,里面可以定义函数 方法,实现接口后,重写完成某个 *** 作具体代码 *** 作。就是将类内部进行分类。对于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;”。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2611192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存