1. 程式人生 > >Java8之Interface介面新特性

Java8之Interface介面新特性

在java1.8版本以前,Interface介面中所有的方法都是抽象方法和常量,而java1.8我們就可以定義帶有方法體的方法。這也使我們在定義介面的時候就有更高的靈活性,一些不需要重寫的方法我們我們就直接在介面中定義好了就可以了!

在定義介面的時候我們使用default和static關鍵字修飾。如下:

interface Sample{
public void show();
default void run1(){
System.out.println(" default runing...");
}
static void run2(){
System.out.println("static runing...");
}
}

注意事項:

如果我們有一個類需要實現多個介面,而在些不同的介面中有相同的引數和default修飾的方法,這時候我們就需要重寫這個相同的引數和default修飾的方法,被static修飾的則不需要。下面簡單的程式碼演示:

package com.jike.jdk8;

public class MyTest {

	public static void main(String[] args) {
		
		Test1.run2();//介面中定義的靜態方法直接呼叫
		Test2.run2();
		
		Test test = new Test();
		test.show();
		test.run1();
		

	}

}

class Test implements Test1,Test2{
	@Override
	public void show(){
		Test2.super.run1();
	}

	@Override
	public void run1() {		
		Test1.super.run1();
	}
	
}


interface Test1{
	void show();
	default void run1(){
		System.out.println("test1 run1.... ");
	}
	static void run2(){
		System.out.println("test2 run2.....");
	}
}

interface Test2{
	void show();
	default void run1(){
		System.out.println("test2 run1.... ");
	}
	static void run2(){
		System.out.println("test2 run2.....");
	}
}


執行結果:

test2 run2.....

test2 run2.....

test2 run1.... 

test1 run1....