1、定义:
接口是java中的一种引用类型,是方法的集合,接口中的方法全是抽象方法、默认方法、静态方法(JDK8)。只有方法的声明,具体的实现需要接口的实现类(接口的子类)来实现
public interfere 接口名称{
//成员变量
//抽象方法
//默认方法
//静态方法
}
public class 实现类 implements 接口名称{
}
2、成员变量
接口中的成员变量都有默认修饰符 public static final,不再是变量,是常量,所以一般都是用大写来命名变量
3、方法
接口中的方法都有默认的修饰符public abstract
4、接口的特点
1、类与接口是实现关系,接口可以是单实现,也可以是多实现,也可以在继承一个类的同时,实现多个接口
2、接口与接口是继承关系,可以单继承,也可以多继承(这一点和类的单继承有所区别)
5、接口和抽象类的区别
抽象类是一类事物中共性的内容
接口是特有的功能,不是共有的内容
类型 | 区别 |
---|---|
抽象类 | 1、抽象类中可以有具体的方法;2、抽象方法中可以有变量;3、单继承; |
接口 | 1、接口不能有具体的方法;2、抽象方法中不能有变量;3、接口和类,接口和接口,可以单继承,可以多继承 |
6、接口的默认方法
public default 返回类型 方法名(){
//默认方法是可以有实体的
}
为什么要有默认方法:
如果在接口里面新增了一个新的抽象方法,则继承了这个接口的所有子类都会报错,都需要重写这个方法,很麻烦,所以可以直接写一个默认方法,继承了接口的子类都可以使用方法调用的形式调用默认方法,不用一一去改子类,很快捷
同时默认方法也是可以重写也可以不重写的
@Override
public 返回类型 方法名(){ //格式上去掉了default这个关键字
//重写默认方法
}
7、接口中的静态方法
public static 返回类型 方法名(){
//静态方法是可以有实体的
}
调用方式:
接口名.方法名(参数) //实现类不可以用,只能是接口自己用
8 、注意事项
1、实现类必须重写接口中的所有抽象方法,除非实现类本身是抽象类
2、接口中没有构造方法,所以不能创建对象(对比一下抽象类中可以有构造方法,主要是给子类用,其本身不能使用构造方法创建对象)
3、方法的返回值类型如果是接口,则返回其实现类对象