Java8之Interface介面新特性
阿新 • • 發佈:2019-02-02
在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....