Java接口中的静态方法

时间:2020-01-09 10:34:52  来源:igfitidea点击:

在Java接口默认方法一文中,我们已经看到JavaInterface默认方法在接口中添加的功能之一。在本文中,我们将看到Java接口中Java 8Static方法的接口中添加了另一个功能。

Java接口静态方法

我们必须知道,静态方法是与定义该方法的类关联的方法,而不是与任何对象关联的方法。该类的每个实例都共享其静态方法。

接口中的静态方法也具有相同的静态方法功能。静态方法与定义该方法的接口相关联,可以独立于任何对象调用静态方法。因此,我们无需实现接口或者获取接口的引用即可调用接口静态方法。

要在Java界面中定义静态方法,请在方法签名的开头添加static关键字,这与在Java类中定义静态方法的方式类似。

Java接口中的所有方法都是隐式公共的,因此默认情况下接口中的静态方法也是公共的。

要在接口中调用静态方法,请使用以下语法:

InterfaceName.staticMethodName();

Java接口静态方法示例

import java.text.SimpleDateFormat;
import java.util.Date;

public interface MyInterface {
	int add(int a, int b);
	// interface default method
	default void showMessage(String msg) {
		System.out.println("Default method in MyInterface message- " + msg);
	}
	// interface static method
	static String getDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("dd\MM\yyyy");
		return sdf.format(date);
	}
}

public class MainClass{
	public static void main(String[] args) {
		String date = MyInterface.getDate(Calendar.getInstance().getTime());
		System.out.println("Date- " + date);
	}
}

输出:

Date- 2118

如我们所见,在接口中访问静态方法getDate()时,该类无需实现该接口。

接口静态方法的好处

  • 通常,静态方法用于编写辅助方法(实用程序),因此现在可以在接口中编写这些辅助方法。

  • 在界面中保留静态方法可以使我们更轻松地在库中组织帮助程序方法。我们可以将特定于接口的静态方法保留在同一接口中,而不是在单独的类中,例如Collection接口和Collections类。

接口静态方法不继承

接口中的静态方法不会被任何扩展接口或者实现类继承。

尝试在扩展接口中继承静态方法。

从扩展接口,我们正在尝试访问超级接口中的静态方法,这会导致编译时错误。

实现接口的类也无法使用类名访问该接口的静态方法。