Java中的interface(接口)是一种表示抽象数据类型的好方法。接口中是一连串的方法标识,但是没有方法体(定义)。如果想要写一个类来实现接口,我们必须给类加上implements关键字,并且在类内部提供接口中方法的定义。所以接口+实现类也是Java中定义抽象数据类型的一种方法。
这种做法的一个优点就是接口只为使用者提供"契约”(contract),而使用者只需要读懂这个接口即可使用该ADT,他也不需要依赖ADT特定的实现/表示,因为实例化的变量不能放在接口中(具体实现被分离在另外的类中)。
接口的另一个优点就是它允许了一种抽象类型能够有多种实现/表示,即一个接口可以有多个实现类(译者注∶一个类也可以同时实现多个接口)。而当一个类型只用一个类来实现时,我们很难改变它的内部表示。例如之前阅读中的(MyString,这个例子,我们对(MyString实现了两种表示方法,但是这两个类就不能同时存在于一个程序中。
接口格式:
public interface 接口名称 {
}
Interface和Class: 定义和实现ADT
– 接口之间可以继承与扩展
– 一个类可以实现多个接口(从而具备了多个接口中的方法)
– 一个接口可以有多种实现
接口不能直接使用,要想实现,必须要有该接口的一个实现类。
实现类
public class 实现类名称 implements 接口{
}
运用default方法实现接口:
public default 返回类型 方法名(参数列表){
方法体
}
- 其中,public可以省略,default不能省略。
- 默认方法可以用于解决接口升级问题。
- 默认方法可以被接口的实现类对象直接调用、覆盖重写。