接口的定义与特点:
- 接口是体现规范的,其中用抽象方法定义的一组行为规范,接口是更加彻底的抽象。体现了现实世界中“如果你是这类事物...则必须完成某些行为...”的思想。
- 接口格式:public interface 接口名{ //常量 //抽象方法}
- JDK8之前接口中只能是抽象方法和常量,没有其他成分了。
- 接口不能实例化。
- 接口中的成员都是public修饰的,写不写都是,因为规范的目的是为了公开化。
- 接口中的常量都是public static final 修饰的,可以省略不写。
- 接口中的方法都是public abstract 修饰的,可以省略不写。
- 接口不能创建对象。
接口的基本使用:被实现
- 用法:接口是用来被类实现的,实现接口的类称为实现类。实现类可以理解成所谓的子类。接口可以被类单实现,也可以被类多实现。
接口与接口的关系:多继承,一个接口可以同时继承多个接口。
- 多继承的作用:规范合并,整合多个接口为同一个接口,便于子类实现。
JDK8开始接口新增方法:
- 允许接口中直接定义带有方法体的方法
-
- 第一种:默认方法
-
-
- 类似之前写的普通实例方法:必须用default修饰。
- 默认会public修饰,需要用接口的实现类的对象来调用。
-
-
- 第二种:静态方法
-
-
- 默认会public修饰,必须static修饰。
- 注意:接口的静态方法必须用本身的接口名来调用。
-
-
- 第三种:私有方法
-
-
- 就是私有的实例方法,必须使用private修饰,从JDK1.9才开始有的。
- 只能在本类种被其他的默认方法或者私有方法访问。
-
- 他们都会默认被public修饰
- JDK8新增的三种方法我们自己在开发中很少使用,通常是Java源码涉及到。
接口的注意事项:
- 接口不能创建对象。
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突。接口的静态方法只能自己调用,不会出现实现类调用,所以不冲突。
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。
- 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。
- 一个接口继承多个接口是没有问题的,如果多个接口中存在规范冲突则不能多继承。