天天看點

jdk1.8的接口中default修飾的方法

我用的的是jdk1.8,某次在編寫某個類實作listener接口的時候,發現ide沒有提示實作接口的方法,有點迷就去接口源碼去看了一下,看到接口裡的方法竟然可以定義為default類型,加了一個default關鍵字修飾方法,就去百度檢視了一下這個default關鍵字究竟有什麼含義,原來是jdk1.8的接口新特性

我們都知道接口裡的變量預設隐含類型是public static final,也是就是說是常量。而方法預設類型是public abstract,是以接口的方法都是抽象方法,但是事實真的是這樣嗎?

(1)增加default方法。對已有的接口,如果想對接口增加一個新方法,那麼需要對實作該接口的所有類進行修改,如果接口實的現類很多,就會帶來很大的工作量,而且還很容易破壞以前的代碼,帶來一些問題。如果把新的方法定義為default方法,就可以避免對其他實作類的修改。

但是,這樣也會有一個問題:如果接口A和接口B裡有一個名字相同并且參數清單也相同的方法都被定義為了default方法,那麼當類C實作接口A和接口B的時候就會在編譯時報錯。由于是編譯時報錯,這個完全可以接受,當類C成功實作了

接口A和接口B以後(沒有沖突),類C的執行個體就可以調用接口A和接口B裡的default方法了。

上一篇: GWT 入門
下一篇: GWT 學習總結