1. 程式人生 > >Java8新特性,介面中的靜態方法和預設方法詳解

Java8新特性,介面中的靜態方法和預設方法詳解

在此之前可以先看一下這個大佬寫的文章,裡面關於Java 8介面中的靜態方法和預設方法的新特性解釋的蠻好的

在這裡補充幾點其他需要注意的,也可能是你一直疑惑的(我之前就困惑了好久)~

  1. 介面中的靜態方法其實是不可以直接被子類物件直接呼叫,不僅介面中的靜態方法,其他的抽象類,普通類的static方法都不可以被子類物件直接呼叫,原因是因為一個類可以實現多個介面,如果2個介面具有相同的靜態方法,它們都將被繼承,編譯器就不知道要呼叫哪個介面了,這也是為了防止被static修飾的成員方法和成員變數都屬於這個類的,不屬於這個類的任何一個例項。另外子類繼承不到也實現不了父類或介面的靜態方法,子類寫一個跟父類一樣的靜態方法(或子介面寫一個父介面一樣的靜態方法)都不屬於方法重寫,而是屬於子類本身的方法。
  2. 如果實現了多個介面,然後介面中都有相同的default預設的方法,這個時候是必須選擇實現其中一個介面的default方法,不然會出現下面的編譯錯誤,如圖: 如圖