天天看點

Java8新特性,接口中的靜态方法和預設方法詳解

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

https://blog.csdn.net/aitangyong/article/details/54134385

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

  1. 接口中的靜态方法其實是不可以直接被子類對象直接調用,不僅接口中的靜态方法,其他的抽象類,普通類的static方法都不可以被子類對象直接調用,原因是因為一個類可以實作多個接口,如果2個接口具有相同的靜态方法,它們都将被繼承,編譯器就不知道要調用哪個接口了,這也是為了防止被static修飾的成員方法和成員變量都屬于這個類的,不屬于這個類的任何一個執行個體。另外子類繼承不到也實作不了父類或接口的靜态方法,子類寫一個跟父類一樣的靜态方法(或子接口寫一個父接口一樣的靜态方法)都不屬于方法重寫,而是屬于子類本身的方法。
  2. 如果實作了多個接口,然後接口中都有相同的default預設的方法,這個時候是必須選擇實作其中一個接口的default方法,不然會出現下面的編譯錯誤,如圖:
    Java8新特性,接口中的靜态方法和預設方法詳解