接口
接口是用来体现规范的
基本形式:
public interface 接口名{
}
在JDK8之前,接口只能是抽象方法和常量,没有其他成分了
- 接口不能实例化(不能new出来)
- 接口中的成员都是用public修饰,不写的话也是使用public修饰
实现类:接口是用来被类实现(implements)的,实现接口的类称为实现类
- 接口可以被类单继承,也可以被类多实现。(单继承,多实现)
- 一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类
类和类的关系 | 单继承 |
---|---|
类和接口的关系 | 多实现 |
接口和接口的关系 | 多继承,一个接口可以同时继承多个接口 |
方法:
- 默认方法public(JDK8开始)
- 必须default修饰,默认用public修饰
- 默认方法接口不能创建对象,这个方法只能过继给实现类,由实现类的对象调用
- 静态方法
- 接口的静态方法,必须接口名自己调用
- 私有方法 private (JDK1.9才支持)
- 必须在接口内部才能被访问
特点:
- 接口不能创建对象
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突(接口的静态方法只能自己调用)
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的
- 一个类实现了多个接口,多个接口中存在同名的默认方法不冲突,这个类重写该方法即可
- 一个类接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突,不能实现多继承