接口中一共可以定义三种方法:
1、抽象方法,也就是需要实现者必须实现的方法,最常见的那种
2、默认方法,不需要实现者实现
3、静态方法,不需要实现者实现
默认方法:
允许在已有的接口中添加新方法,而同时又保持了与旧版本代码的兼容性,默认方法与抽象方法不同之处在于抽象方法必须要求实现,但是默认方法则没有要求实现,相反,每个接口都必须提供一个默认实现,这样所有的接口实现者将会默认继承他(如果有必要的话,可以覆盖这个默认实现)
静态方法:
允许在已有的接口中添加静态方法,接口的静态方法属于接口本身,不被继承,也需要提供方法的实现。
默认方法和静态方法的访问:
接口的静态方法:直接用接口的类型.方法名。
接口的默认方法:得到接口的实现类对象,直接用对象的引用.方法名。默认方法可以被实现类覆盖。
下面上实例:
/** * 测试接口 */ public interface IFunctional { //定义一个抽象方法,要求被实现着实现 void method(String from); //定义一个默认方法,不要求被实现 default void defaultMethod(){ System.out.println("接口的默认方法"); } //定义一个静态方法,不要求被实现 static void staticMethod(){ System.out.println("接口静态方法的默认实现"); } }
继承类
** * 测试实现类 */ public class Main implements IFunctional { @Override public void method(String from) { System.out.println("子类实现的接口抽象方法..."); } public static void main(String[] args) { Main main = new Main(); //访问接口的默认方法 main.defaultMethod(); //访问接口的静态方法:直接用接口的类型.方法名 IFunctional.staticMethod(); } }