接口:可以理解为一种约定(体现在接口名称和注释上)/对希望符合这个接口的类的一种需求。
面向接口编程:程序设计时面向接口的约定而不考虑具体实现
接口特性:1 实现类必须实现接口的所有方法
2 实现类可以实现多个接口
3 接口中的变量都是静态常量,没有使用static final也是这个表示
4 接口不能被实例化
5 接口中所有方法和常量都是public
6 接口中没有方法实现 所有方法修饰访问默认都是都是public abstract(可以不写)
7 用default修饰的为默认方法可以带方法体,可以不用重写,子类用(接口名.super.方法名())来使用
8 用static修饰的为默认方法可以带方法体,不可以重写,子类用(接口名.方法名())来使用
接口的使用:1、接口代表一种能力!,接口中可以定义N多个方法,子类在进行实现的时候必须要实现这些方法,将这些方法进行实现,就意味着具体了方法的能力
2、接口不能创建实例,但是可以用于声明引用变量类型
3、接口支持多“继承”,当多个接口中有同名的方法时,子类中必须写一个同名的方法,如果此时父类中也有同名方法,那么调用时直接调用父类方法。
4、同时使用时 extends必须在implements之前
5、我们可以用接口指向实现类来是使不同类型用该接口的具体表现方法,用接口来描述不同的类型具有相似的行为特征
接口相关规则:1、可以定义一个新接口,用extends去继承一个已有的接口
2、可以定义一个类,用implements去实现一个接口中所有的方法
3、可以定义一个抽象类,用implements去实现一个接口中部分方法
面向接口编程1、程序设计时关心实现类有何能力,而不关心实现细节。
2、面向接口的约定而不考虑接口的具体实现