java基础—接口
接口就是多个类的公共规范(一种公共的规范标准,只要符合规范标准,大家就都可以使用)
接口是引用数据类型,最重要的内容就是其中的抽象方法
如何定义一个接口:
public interface 接口名称==(大驼峰)== {
接口内容
}
备注
1.如果是Java7,那么接口包括的内容有:
—A.常量
—B.抽象方法
2.如果是Java8,那么接口还额外包括的内容有:
—A.默认方法
—B.静态方法
3.如果是Java8,那么接口还额外包括的内容有:
—A.私有方法
在任何版的Java中,接口都可以定义抽象方法
注意事项
1.接口中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2.这两个关键字修饰符可以选择性的省略
3.方法的三要素可以随意定义
接口使用步骤
1.接口不能直接使用,必须有一个实现类来实现接口
格式:
public class 实现类名称 implements 接口名称 {
…
}
2.接口的 实现类必须覆盖重写(实现)接口中所有的抽象方法==(实现:去掉abstract关键字,加上方法体大括号)==
3.创建实现类对象进行使用
注意事项
1.如果实现类不能够覆盖重写接口中所有的抽象方法,那么这个实现类就必须是抽象类
从Java8开始,接口里面允许定义默认方法
格式:
public default 返回值类型 方法名称 (参数列表){
方法体
}
备注
1.接口中的默认方法,可以解决接口升级的问题
2.接口的默认方法,可以通过接口的实现类直接调用
3.接口的默认方法,也可以被接口的实现类进行覆盖重写
从Java8开始,接口里面允许定义静态方法格式:
public static 返回值类型 方法名称 (参数列表){
方法体
}
备注
1.不能通过接口的实现类来调用接口中的静态方法
正确用法
1.通过接口名称,直接调用其中的静态方法
格式
接口名称.静态方法名(参数)
从Java9开始,接口里面允许定义私有方法(私有方法:不希望接口实现类访问到)
1.普通私有方法:解决多个默认方法之间的代码重复问题
格式:
private 返回值类型 方法名称 (参数列表){
方法体
}
2.静态私有方法:解决多个静态方法之间的代码重复问题
格式
private static 返回值类型 方法名称 (参数列表){
方法体
}
接口当中也可以定义成员变量,但是必须用public static final 这三个关键字进行修饰,从效果上看就是接口的常量
格式:
public static final 数据类型 常量名称 = 数据值
备注
1.一旦使用final关键字进行修饰,就说明不可改变
2.接口中的常量可以省略public static final 这三个关键字,但是不写也照样是这样的
3.接口中的常量必须进行赋值,不能不赋值
4.接口中的常量的名字使用完全大写的字母,使用下划线进行分割(推荐命名),使用的时候用接口名称.接口中的常量的名字就可以了
接口内容小结
接口在使用时需要注意的事情:
1.接口是没有静态代码块和构造方法的
2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口
格式
public class 实现类名称 implements 接口1,接口2 …{
覆盖重写所有抽象方法
}
3.如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可
4.如果实现类没有实现所有接口的所有抽象方法,那么实现类就必须是个抽象类
5.如果实现类所实现的多个接口中有重复的默认方法,那么实现类一定要对重复的默认方法实现覆盖重写
6.一个类中如果直接父类的方法和接口中的默认方法产生了冲突,会优先用父类的方法
类和接口的关系
1.类与类之间是单继承,直接父类只有一个
2.类与接口是多实现的,一个类可以实现多接口
3.接口和接口之间是多继承的
注意事项
1.多个父接口当中抽象方法如果重复,没关系
2.多个父接口当中默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且呆着default关键字