原创

【每天十分钟JAVA快速入门】(十一)接口

接口

接口使用interface关键字来修饰,因此接口不是类,它是对一系列功能集合的定义。一个非常直观的看得见摸得着的类比就是电脑主板接口,规定了一系列的硬件接入标准,只要遵循相应的接口规则,实现了接口功能,无论哪个厂家生产的硬件都可以正常工作。

定义
接口默认都是public的,接口内的方法默认也是public的,因此public关键字可以省略。例如:
interface Flyable{
void fly();
}
接口也可以继承另一个接口。
接口中可以有常量,他们会被自动设置为 public static final。

实现
类使用implements关键字来标识实现什么接口,并实现接口中定义的所有方法,例如:
public class Bird implements Flyable{
pubic void fly(){
System.out.println("flying flying ... ");
}
}
定义一个鸟类,实现Flyable接口表示它拥有飞翔的能力。
实现了接口的类都可以看做是接口的子类,例如,我们可以这样写:
Flyable flyable = new Bird();
前面我们提到Java不允许类多继承,但是类可以通过实现多个接口,来获得更多的灵活性和功能性。

接口静态方法
在Java8中,接口可以有静态方法。

接口默认方法
接口还可以为接口方法提供一个默认的实现,使用default来修饰,例如:
interface Flyable{
void fly();
void glide(){
System.out.println("gliding gliding ... ");
}
}
看起来没什么用,但是我们之前提到,类必须实现接口中的所有方法,如果接口中有大量的方法我们并不关心,但是如果没有default,我们仍然需要将那些方法实现一遍,即使只是实现一个空的方法体。有了接口default实现方法,我们就可以不用再关心我们暂时用不上的方法了。

默认方法还有一个重要的用处在于代码兼容,试想如果有一个接口在新的版本中升级,增加了一个新的方法,如果这个接口方法没有默认实现,那么老的实现类中由于没有实现该方法则会导致代码编译错误。
正文到此结束