接口就是多个类的公共规范,接口是一种引用数据类型。
接口的定义格式:
public interface 接口名称{...}
接口中可以包含的内容有:1.常量 2.抽象方法 3.默认方法 4.静态方法 5.私有方法
注意事项:
1.接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2.这两个关键字修饰符可以选择性忽略
接口的使用步骤:
1.接口不能直接使用,必须要有一个实现类来实现该接口
格式:
public class 实现类名称 implements 接口名称{...}
2.接口的实现类必须覆盖重写接口中所有的抽象方法
3.创建实现类的对象,进行使用
注意:如果实现类没有覆盖重写接口中的所有抽象方法,那么这个实现类自己必须是抽象类
默认方法格式:
public default 返回值类型 方法名称(参数列表){...}
1.接口的默认方法可以通过接口实现类对象直接调用
2.接口的默认方法也可以被接口实现类进行覆盖重写。
静态方法格式:
public static 返回值类型 方法名称(参数列表){...}
注意:不能通过接口实现类的对象来调用接口当中的静态方法
从Java9开始,接口当中允许定义私有方法。
1.普通私有方法:解决多个默认方法间重复代码问题
2.静态私有方法:解决多个静态方法间重复代码问题
格式:1.:private 返回值类型 方法名称(参数列表)
2.:private static 返回值类型 方法名称(参数列表)
接口中也可以定义“成员变量”,但必须使用public static final 三个关键字
格式:public static final 数据类型 常量名称=数据值
注意:
1.一旦使用final关键字进行修饰说明不可改变
2.接口中的常量可以省略public static final关键字
3.接口中的常量必须进行赋值
使用接口的时候需要注意:
1.接口是没有静态代码块或构造方法的
2.一个类的直接父类是唯一的,但一个类可以实现多个接口
3.如果实现类的多个接口中存在着重复的抽象方法,那么只需覆盖重写一次
4.如果实现类没有覆盖重写所有接口中的抽象方法,那么实现类必须是一个抽象类
5.一个类如果直接调用父类当中的方法和接口当中的默认方法产生了冲突,优先用父类中的方法
类与类之间是单继承的,直接父类只有一个
类与接口是多继承的,一个类可以实现多个接口
接口与接口之间是多继承的
注意:
1.多个父接口当中的抽象方法可以重复
2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写。