接口
一、接口的简介
1、接口是一种引用类型,是方法的集合
2、如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法
3、从狭义的角度讲就是指java中的interface
4、从广义的角度讲对外提供规则的都是接口
5、JDK 7及以前:包含抽象方法
JDK 8:新增默认方法和静态方法
JDK 9:新增私有方法
二、接口的定义
1、接口的定义格式
public interface 接口名称 {
// 抽象方法
// 默认方法
// 静态方法
// 私有方法
}
2、接口中的抽象方法
public abstract void method();
该方法使用abstract修饰,没有方法体,该方法供子类实现使用(public abstract关键字可以省略)
3、接口中的静态方法和默认方法
默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。
public default void method() {
// 执行语句
}
静态方法:静态方法:使用 static 修饰,供接口直接调用
public static void method2() {
// 执行语句
}
4、接口中的私有方法和私有静态方法
使用 private 修饰,供接口中的默认方法或者静态方法调用
private void method() {
// 执行语句
}
5、接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
接口中,没有构造方法,不能创建对象。
接口中,没有静态代码块
三、接口的实现
类与接口的关系为实现关系,实现接口的类称为接口的实现类,,一个类能继承一个父类,但同时也可以实现多个接口,接口的实现使用implements 关键字
1、实现类必须实现接口中所有的抽象方法,否则该实现类也必须的抽象类
2、实现类继承了接口的默认方法,即可以直接调用,也可以重写。
3、默认方法可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。
4、静态方法只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用
5、私有方法:只有默认方法可以调用,私有静态方法:默认方法和静态方法可以调用
6、接口中,有多个默认方法时,实现类都可继承使用。如果默认方法有重名的,则必须进行方法的重写
7、接口中,存在同名的静态方法并不会冲突,因为只能通过各自接口名访问静态方法
8、当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执 行父类的成员方法。
四、接口的多继承
一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。接口的继承使用 extends 关键字,子接口继 承父接口的方法。如果父接口中的默认方法有重名的,那么子接口需要重写一次。