接口

  1. 接口也是引用数据类型

  2. 接口是完全抽象的

  3. 接口中只有常量和抽象方法

  4. 接口支持多继承

  5. 接口里的都是抽象方法,可以省略public,abstract关键字

  6. 接口中的值不能改变

  7. 一个类实现接口必须实现接口的所有方法

  8. 抽象类本身就有抽象方法不必全部实现

  9. 接口中的方法都是public的

注:以上为个人理解,请辩解试学习

接口概念

官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

特点

就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。

接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。

如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类)

一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

为什么选择接口?

接口被用来描述一种抽象。
因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
接口也被用来实现解耦。
接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

重点

值得注意

  1. 我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。因此,上图中最后的方法调用我们还可以这样写:(实际上就是使用了Java中多态的特性)。
  2. 一个类可以实现不止一个接口。
  3. 一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。
  4. 接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。
  5. 接口用来弥补类无法实现多继承的局限。
  6. 接口也可以用来实现解耦。

语法

package com.q._interface;

public interface USB {
    void print();
}

接口在开发中的作用

接口在开发中的作用类似于多肽在开发中的作用 多肽:

面向对象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力。

抽象类和接口的区别

a) 接口描述了方法的特征,不给出实现,一方面解决 java 的单继承问题,实现了强大
的可接插性
b) 抽象类提供了部分实现,抽象类是不能实例化的,抽象类的存在主要是可以把公共的
代码移植到抽象类中
c) 面向接口编程,而不要面向具体编程(面向抽象编程,而不要面向具体编程)
d) 优先选择接口(因为继承抽象类后,此类将无法再继承,所以会丧失此类的灵活性)

版权声明:本文为mycity原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mycity/p/interface.html