接口就是多个类的公共规范,是一种引用型数据类型,最重要的内容就是其中的抽象方法
定义一个接口的格式:
public interface 接口名称{
//接口内容
} 大驼峰
接口定义抽象方法格式:
public abstract 返回值类型 方法名称(参数列表);
注意事项:
1.接口当中的抽象方法,修饰符必须是两个固定关键字:public abstract
2.这两个关键字修饰符可以选择性省略
3.方法的三要素可以随意定义
定义默认方法格式:
public default 返回值类型 方法名称(参数列表){方法体};
默认方法可以被覆盖
接口当中允许静态方法
格式:
public static 返回值类型 方法名称(参数列表){
方法体
}
将abstract或者default换成static即可,带上方法体。
注意:不能通过接口实现类的对象来调用接口当中的静态方法
正确用法:通过接口名称,直接调用其中的静态方法(接口名称.静态方法名(参数))
接口可以包含的内容有:
1.常量
2.抽象方法
3.默认方法
4.静态方法
5.私有方法
接口使用步骤:
1.接口不能直接使用,必须有一个实现类来实现该接口
格式:
public class 实现类名称 implement 接口名称{
//…
}
2.接口的实现类必须覆盖重写接口中所有的抽象方法
3.创建实现类的对象,进行使用
在Java9+版本中,接口的内容有:
1.成员变量其实是常量,格式:
public static final 数据类型 常量名称 = 数据值;
注意:常量必须进行赋值且不可改变;常量名称完全大写,用下划线进行分隔
2.接口里允许定义私有方法,格式:
普通私有方法:private 返回值类型 方法名称(参数列表){方法体}
静态私有方法:private static 返回值类型 方法名称(参数列表){方法体}
private的方法只有接口自己能调用,不能被实现类使用
使用接口的时候,需要注意:
1.接口是没有静态代码块或者构造方法的
2.一个类的直接父类是惟一的,但是一个类可以同时实现多个接口
格式:
public class MyInterfaceImpl implement MyInterfaceA, MyInterfaceB{
//覆盖重写所有抽象方法
}
3.如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
5.如果实现类实现的多个接口中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。
7.接口可以多继承