java接口方式有哪些 java中接口的特点及作用_java接口方式有哪些


接口

1.接口的特点

首先看下面的这个抽象类代码:


java接口方式有哪些 java中接口的特点及作用_java接口的作用和意义_02


抽象类代码中变量全为常量,方法全是抽象方法,这样的形式,我们可以将它们定义为接口类,书写方式如下:


java接口方式有哪些 java中接口的特点及作用_多继承_03


接口的语法为:

interface 接口名{

常量或方法

}

接口特点:

  • 所有的属性都是公开静态常量
  • 所有的方法都是公开抽象方法
  • 没有构造方法,类中即使不写也有构造方法,但是接口不能创建对象,所以没有构造方法
  • 接口只能声明引用

基于接口特点,在定义接口时实际上需要在定义常量时需要写public static final、定义抽象类时需要写public abstract,但因为在定义接口名称时声明了interface的接口,所有在实际书写过程中可以省略,如下图:


java接口方式有哪些 java中接口的特点及作用_java接口方式有哪些_04


我们可以把接口暂时理解为一种特殊的抽象类,所以类的特征也 同样适用于接口:

  • 一个java文件中可以定义多个接口,但是最多只能有一个公 开接口
  • 公开接口的接口名必须和java文件的文件名完全相同
  • 一个接口编译后会生成一个class文件

2.类与接口的关系


java接口方式有哪些 java中接口的特点及作用_抽象类_05


定义一个实现类实现AI接口,因为接口中都是抽象方法,所以在implements时需要实现抽象方法,否则不能编译。

一个类实现接口,如果自己不想成为抽象类,就必须实现接 口中所有声明的方法。


java接口方式有哪些 java中接口的特点及作用_Java_06


注意:

接口中的方法都是公开的方法,实现类中的方法也必须是公 开的。接口中可以不写public修饰符,但在实现类中需要写public

接口可以声明引用,可以声明方法,可以由实现类实现方法。 抽象类能使用的多态,接口一样可以使用。

3.接口的多继承

接口可以声明引用,可以声明方法,可以由实现类实现方法。 抽象类能使用的多态,接口一样可以使用。那么为什么还要写接口呢?

之前说过Java是单继承语言,但是有接口就可以多继承,解决了继承多个抽象类的问题。如果把接口视为抽象类,则Java实现了多继承。

实现多继承书写方式如下:


java接口方式有哪些 java中接口的特点及作用_Java_07


虽然Java使用接口实现了所谓的多继承,但是没有影响类和 类之间单继承的特性。Java的单继承指的是类之间的继承关系,不包括接口。

为什么Java不能使用多继承呢?

假设一个场景,两个父类中都存在同名方法test,如果使用多继承,子类在调用test方法时不知道应该调用哪个父类中的test方法。

接口为什么能多继承(多实现)?

因为接口中是抽象类,在实现类中可以覆盖接口中同名的方法,实现类不会出现同名方法。

注意:接口不是用来多继承的,它更多的目的是定制一个标准,实现解耦。

定义一个接口就是定义了一个标准,使用这个接口的类就是标准的使用者,实现了这个接口的类就是这个标准的实现者。 接口的出现,把使用者和实现者之间的直接联系转化为间接 联系,把强耦合转换为弱耦合,从而实现解耦的目的。

电脑就应用了解耦的功能,电脑需要鼠标,但是鼠标可能会坏,所以不能鼠标坏了就更换整个电脑,所以电脑对外提供了一个USB接口,鼠标的连接线只要符合USB接口的标准,就可以在电脑中使用,这就成功解决了电脑与鼠标的紧耦合。显示器、游戏手柄都是如此,只要通过USB接口连接,都可以与电脑交互。


java接口方式有哪些 java中接口的特点及作用_多继承_08