接口里的default,static方法


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

我的PC上安裝的是jdk1.8,一次編寫接口代碼的時候,看到接口里的方法竟然可以定義為default類型,很好奇,就查看了一下這個default關鍵字究竟有什么含義,原來是jdk1.8的接口新特性,可以查看下面的一篇文章:

(1)增加default方法。對已有的接口,如果想對接口增加一個新方法,那么需要對實現該接口的所有類進行修改,如果接口實的現類很多,就會帶來很大的工作量,而且還很容易破壞以前的代碼,帶來一些問題。如果把新的方法定義為default方法,就可以避免對其他實現類的修改。
但是,這樣也會有一個問題:如果接口A和接口B里有一個名字相同並且參數列表也相同的方法都被定義為了default方法,那么當類C實現接口A和接口B的時候就會在編譯時報錯。由於是編譯時報錯,這個完全可以接受,當類C成功實現了
接口A和接口B以后(沒有沖突),類C的實例就可以調用接口A和接口B里的default方法了。

(2)新增了static函數。static修飾的方法也是非抽象方法,有自己的方法體,在接口中定義一個靜態方法,該方法可以直接用< 接口名.方法名() >的形式來調用。相當於調用類的靜態方法一樣,給方法的調用帶來了方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM