个人笔记,仅供参考
1、概念
接口即一种公共规范标准
只要符合标准,就可以通用
2、定义基本格式
接口就是多个类的公共规范,是引用数据类型
最重要的就是其中的抽象方法
public interface 接口名称{
//接口内容
}
备注:编译生成的字节码文件还是.class
可以包含的内容:
1、常量(java7)
2、抽象方法(java7)
3、默认方法(java8)
4、静态方法(java8)
5、私有方法(java9)
3、定义
创建接口时要选择interface
public interface interfaceDemo {
//抽象方法
public abstract void methodAbs1();
//接口中抽象方法必须用两个固定的修饰符
//可以选择性省略
public abstract void methodAb2();
abstract void methodAbs3();
void methodAbs4();
//方法三要素可以随意定义
}
4、接口使用步骤
1、不能直接使用,必须有一个实现类,来实现该接口
public class 实现类名称 implements 接口名称{
//...
}
2、接口的实现类必须覆盖重写(实现)接口中所有的抽象方法,去掉abstract关键字,加大括号
3、创建实现类的对象,使用
注意:如果实现类没有覆盖重写所有抽象方法,那他自己就必须是抽象类
5、接口的默认方法
public default 返回值类型 方法名称(参数列表){方法体}
解决接口升级的问题,默认方法会被实现类继承
1、接口的默认方法,可以通过实现类对象直接调用
2、接口的默认方法,也可以用过接口实现类覆盖重写
6、接口的静态方法
格式:
public static 返回值类型 方法名称(参数列表){方法体}
使用:
1、不能通过接口实现类对象来直接调用接口中的静态方法
2、通过接口名称直接调用
接口名称.静态方法名(参数)
7、接口的私有方法
java9才有
有时候需要抽取一个公共方法来解决代码重复的问题,但使用默认方法会让实现类也继承下去,此时应使用私有方法
1、普通私有方法:解决对个默认方法之间代码重复问题
2、静态私有方法:解决多个静态方法之间代码重复问题
格式:
private 返回值类型 方法名称(参数列表){
方法体
}//普通
private static 返回值类型 方法名称(参数列表){
方法体
}
8、接口的常量定义和使用
接口当中也可以定义"成员变量",但是必须使用public static final 三个关键字修饰,其实就是接口的常量
格式
public static final 数据类型 常量名称 = 数据值
final为不可变
可以省略这三个关键字
接口中的常量必须赋值
注意:常量名称用大写,用下划线分隔
使用:接口名称.常量名称
9、继承父类并实现多个接口
public class MyInterfaceImpl implments MyInterfaceA, MyInterfaceB{
//覆盖重写所有抽象方法
}
如果实现的多个接口中存在重复的抽象方法,只要覆盖重写一次即可。
如果实现的多个接口有重复的默认方法,那么实现类要对冲突的默认方法覆盖重写
一个类如果直接父类当中的方法和接口当中的默认方法产生了冲突,优先用父类的方法
10、接口之间的多继承
1、类与类之间是单继承的,直接父类只有一个
2、类与接口之间是多实现的,一个类 可以实现多个接口
3、接口与接口之间是多继承的,