介绍
接口是Java的一种引用类型,是方法的集合
接口的成员
没有静态代码块,没有成员变量,没有构造方法
只能定义静态常量,有抽象方法(jdk7),默认方法(jdk8)和静态方法(jdk8)
接口的编译
接口的定义,与定义类相似,但是使用’interface'关键字
接口会被编译成 .class文件,但它并不是类,而是一种引用数据类型
接口中没有构造方法,不能创建对象,可以被实现(重写方法),类似于继承,通过其实现类创建对象
类与接口的实现
类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类
实现的动作类似继承,只是关键字不同,实现使用implements关键字
实现格式
public [abstract] class 类名 [extends 父类名] [implements 接口名1,接口名2,接口名3,...]{}
单实现访问特点
接口中的常量:主供接口名调用,也可以被实现类继承
接口中的抽象方法:只供实现类重写,实现类非抽象类必须重写
接口中的默认方法:可供实现类对象直接调用,或者在实现类中重写
接口中静态方法:只供接口名直接访问,不可以被实现类继承
多实现存在的同名问题
常量同名:有冲突,只提供接口名分别调用,不可以被继承
抽象方法:没有冲突,该重写就重写,实现类是抽象类可以不重写
默认方法同名:有冲突,实现类必须重写一次同名的默认方法
继承并实现存在优先级问题
常量同名:有冲突,只提供接口名和类名分别调用,不可以被继承
成员方法与默认方法同名:无冲突,子类可以优先拥有父类的成员方法
静态方法同名:无冲突,通过类名或接口名调用
接口与接口之间的多继承
接口与接口之间是继承关系,且支持多继承
实现格式
public interface 子接口名 extents 父接口名1,父接口名2...{}
多继承存在的同名问题
如果父接口中的默认方法有重名,那么子接口必须重写一次