JDK8还向接口添加了另一个新功能:定义一个或多个static方法的能力.与类中的static方法一样,接口定义的static方法可以由任何对象单独调用.因此,要调用static方法,接口的实现不是必须的,接口的实例也不是必需的.但对static方法的调用是通过指定接口名称,后跟一个句点和方法名称来实现.调用static方法的一般形式如下:
InterfaceName.staticMethodName
注意,这种调用方式与调用类中的static方法的方法类似.
下面的示例演示了如何将一个static方法添加给前面介绍过的MyIF接口.这个static方法为getUniversalID(),他返回值为0;
public interface MyIF { int getUserID(); default int getAdminID() { return 1; } static int getUniversalID() { return 0; } }
可以调用getUniversalID()方法,如下所示:
public static void main(String args[]) { System.out.println(MyIF.getUniversalID()); }
所前所述,在调用getUniversalID()方法时,MyIF接口的实现或实例都不是必需的,因为该方法是static方法.
static接口方法既不能被实现类继承,也不能被子接口继承.