目录
[1.允许在接口中定义默认方法,需要使用关键字 default 修饰](#1.允许在接口中定义默认方法,需要使用关键字 default 修饰)
[2.允许在接口中定义静态方法,需要用 static 修饰](#2.允许在接口中定义静态方法,需要用 static 修饰)
[3.允许在接口中定义私有方法,用 private 修饰](#3.允许在接口中定义私有方法,用 private 修饰)
一.接口
接口: 接口就是一个规则,而且是独立于继承体系以外的规则。(可以理解为干爹)
格式:关键字 interface 来定义
public interface 接口名{...}
使用: 接口和类之间的是实现关系,通过implements 关键字表示
public class 类名 implements 接口{...} //定义接口
public class 类名 extends 父类{...} //定义继承类
注意:
- 接口不能实例化
- 接口的子类(实现类),要么重写接口中所有的抽象方法,要么实现类是一个抽象类
- 一个类可以实现多个接口,也可以在继承一个类的同时,实现多个接口
public class 类名implements 接口1,接口2{...}
public class 类名 extends 父类 implements接口1,接口2{...}
二.接口中的成员变量的特点
**成员变量:**只能是常量。默认修饰符:public static final
接口中没有构造方法。
成员方法:JDK7之前接口里的方法默认是抽象方法,是为了定义行为规范,强制类遵循,必须重写。
JDK8以后接口中新增的方法:
1.允许在接口中定义默认方法,需要使用关键字 default 修饰
**作用:**为了接口升级时,代码不报错。(在之前接口里定义的方法必须被实现类重写)
接口中默认方法的定义格式:
格式: public default 返回值类型 方法名(参数列表){ }
**范例:**public default void show(){ }
接口中默认方法的注意事项:
- 默认方法不是抽象方法 ,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字
- public可以省略,default不能省略
- 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
2.允许在接口中定义静态方法,需要用 static 修饰
接口中静态方法的定义格式:
格式 :public static 返回值类型 方法名(参数列表){ }
范例: public static void show(){ }
接口中静态方法的注意事项:
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
- 静态方法不能重写
- public可以省略,static不能省略
3.允许在接口中定义私有方法,用 private 修饰
接口中的私有方法(为本接口内的默认/静态方法服务,不给外界使用):
(1).普通的私有方法
作用: 为了抽取**默认方法(default)**中重复代码而出现的
格式: private 返回值类型 方法名(参数列表){ }
(2).静态的私有方法
作用: 为了抽取静态方法中重复代码而出现的
格式: private static 返回值类型 方法名(参数列表){ }
三.接口和类之间的关系
类和类的关系
- 继承关系,只能单继承,不能多继承,但是可以多层继承
类和接口的关系
- 实现关系,类实现接口,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口和接口的关系
- 继承关系,可以单继承,也可以多继承