Java 8中接口定义

一接口定义

[修饰符]interface 接口名 extends 父接口1,父接口2…

{

     零个到多个常量定义…

     零个到多个抽象方法定义…

     零个到多个内部类,接口,枚举定义…

     零个到多个默认方法或类方法定义…

}

二接口应用

1 Output接口

package cakin24;


public interface Output
{
	// 接口里定义的成员变量只能是常量
	int MAX_CACHE_LINE = 50;
	// 接口里定义的普通方法只能是public的抽象方法
	void out();
	void getData(String msg);
	// 在接口中定义默认方法,需要使用default修饰
	default void print(String... msgs)
	{
		for (String msg : msgs)
		{
			System.out.println(msg);
		}
	}
	// 在接口中定义默认方法,需要使用default修饰
	default void test()
	{
		System.out.println("默认的test()方法");
	}
	// 在接口中定义类方法,需要使用static修饰
	static String staticTest()
	{
		return "接口里的类方法";
	}
}

2 OutputFieldTest类

package cakin;


public class OutputFieldTest
{
	public static void main(String[] args)
	{
		// 访问另一个包中的Output接口的MAX_CACHE_LINE
		System.out.println(cakin24.Output.MAX_CACHE_LINE);
		// 下面语句将引起"为final变量赋值"的编译异常
		// lee.Output.MAX_CACHE_LINE = 20;
		// 使用接口来调用类方法
		System.out.println(cakin24.Output.staticTest());
	}
}

3 运行结果

50

接口里的类方法

4 代码分析

4.1 上面定义了一个Output接口,这个接口包含一个成员变量:MAX_CACHE_LINE。除此之外,还定义了两个普通方法:表示取得数据的getData方法和表示输出的out方法。

4.2 Java 8中允许在接口中定义默认方法,默认方法必须使用default修饰,该方法不能使用static修饰。

4.3 Java 8中允许在接口中定义类方法,类方法必须使用static修饰,该方法不能使用default修饰,无论程序是否指定,类方法总是使用public修饰。类方法可以直接使用接口来调用。

4.4 接口里的成员变量默认是使用public static finaI修饰,因此即使另一类处于不同包下,也可以通过接口来访问接口里的成员变量。

猜你喜欢

转载自cakin24.iteye.com/blog/2329803