接口

作者: Yuuki优 | 来源:发表于2019-08-26 17:24 被阅读0次

    什么是接口

    一个Java接口 是一些方法特征的集合,这些方法特征当然来自于具体方法,但是它们一般都是来自于一些在系统中不断出现的方法。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。

    在Java语言规范中,一个方法的特征仅仅包括方法的名字,参量的数目和种类,而不包括方法的返回类型,参量的名字以及所抛出的异常,在Java编译器检查方法的置换时候,则进一步检查2个方法(分父类型与子类型)的返回类型和抛出的异常是否相同。

    在使用接口时候,需要指明接口本身,以及实现这个接口的类。这种关系叫做接口继承;而一个类是另一个类的子类,这种关系叫实现继承。接口继承的规则与实现继承的规则不同,一个类最多只能够有一个父类,但是可以同时实现几个接口

    Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更为抽象化。

    一个Java接口的方法只能是抽象的和公开的,Java接口不能有构造方法。Java接口可以有public,静态的和final的属性。

    实现一个共同的Java接口的两个类常常完全不同,但是有一组相同的方法和常数。一些看上去毫不相干的类,可以提供相类似的服务,从而具有相同的接口。

    接口和类的最重要的区别是,接口仅仅描述方法的特征(Signature),而不给出方法的实现;而类不仅给出方法的特征,而且给出方法的实现。因此,接口把方法的特征和方法的实现分割开来。这种分割,体现在接口常常代表一个角色(role),它包装与 该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色可以由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求有任何其他的共同之处

    为什么要使用接口

    首先我们要思考如果没有接口会怎么样呢?一个类总归可以从另外一个类继承,难道这还不够吗?这需要了解一个名词 可插入性 ,因为Java语言是一个单继承的语言,换而言之,一个类只能有一个父类,因此,在很多的情况下,这个类可能已经有了父类,这个时候给他加上一个新的超类是不现实的。但是接口是对可插入性的保证,在一个类的等级结构中的任何一类都可以实现一个接口,这个接口会影响到此类的所有子类,但是不会影响到此类的任何父类。此类将不得不实现这个接口所规定的方法,而其子类则可以从此类自动继承到这些方法,也可以选择置换掉所有这些方法,或者其中的某一些方法。这时候,这些子类就具有了可插入性。

    关联的可插入性

    一个对象要完成一项任务,所以需要知道其他对象,并且调用其他对象的方法,这个对象对其他对象的知识叫做关联。

    如果一个管理不是针对一个具体类,而是针对一个接口的,那么任何实现这个接口的类都可以满足要求。换而言之,当前对象并不在意所关联的是哪一个具体类,而仅仅关心这个类是否实现了某一个接口。

    调用的可插入性

    一个对象不可避免的需要调用其他对象的方法,这种调用不一定非得是是某一个具体类,而可以是一个接口。这样一来,任何实现了这个接口的具体类都可以被当前对象调用,而当前对象到底调用的是哪一个具体类的实例则完全可以冬天地决定。

    因此,接口提供了关联以及方法调用上的可插入性,软件系统规模越大,生命周期越长,接口的重要性就越大。接口使得软件系统在灵活性和可扩展性,可插入性方面得到保证

    类型

    Java接口(以及Java抽象类)用来声明一个新的类型

    Java设计师应当主要使用Java接口和抽象Java类将软件单位与内部和外部耦合起来。换而言之,应当使用Java接口和抽象Java类而不是具体类进行变量的类型声明,参量的类型声明,方法的返回类型声明,以及参数类型的转换等。当然,一个更好的做法是仅仅使用Java接口,而不要使用抽象Java类来做到上面这些。

    在理想的情况下,一个具体Java类应当只 实现Java接口和抽象Java类中声明过的方法,而不应当给出多余的方法

    我好累,今天就写到这里吧

    相关文章

      网友评论

          本文标题:接口

          本文链接:https://www.haomeiwen.com/subject/qqjdectx.html