Java 1.8开始支持在接口中定义静态方法(有方法体)和默认方法(有方法体),也就是说接口中的方法可以被static和default修饰,一旦修饰,默认方法必须存在方法体。接口方法的定义规则变成了只允许public、abstract、default、static来作为修饰接口中的方法,其它是不允许的。
静态方法不能被接口的实现类调用,只能用接口直接调用。默认方法可以被接口的实现类直接调用。如果接口中的默认方法不能满足某个实现类需要,那么实现类可以覆盖默认方法。如果实现多个接口时,每个接口都有相同的default方法需要重写该方法。
接口中从来没有普通变量,只有常量。接口中默认修饰变量属性用:public static final。接口是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展开放,接口是对开闭原则的一种体现。