对抽象类的补充
作用:两个方面。一方面有了接口,就可以得到多重继承的效果;另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征而已。
接口就是规范,定义的是一组规则。
接口(interface)是抽象方法和常量值定义的集合。
成员:常量、抽象方法、默认方法、静态方法
接口特点:
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有抽象方法都默认是由public abstract修饰的。
接口中没有构造器。 接口采用多继承机制。
面向接口、面向抽象类编程:抽象类和接口的对比
与继承关系类似,接口与实现类之间存在多态性。
接口还可以继承接口(扩展)
静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。
默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。
默认方法的接口冲突问题:
若一个接口中定义了一个默认方法,而另外一个接口中也定义了一个同名同参数的方法(不管此方法是否是默认方法),在实现类同时实现了这两个接口时,会出现:接口冲突。
解决办法:实现类必须覆盖(@override)接口中同名同参数的方法,来解决冲突。
若一个接口中定义了一个默认方法,而父类中也定义了一个同名同参数的非抽象方法,则不会出现冲突问题。因为此时遵守:类优先原则。