更新時間:2020-08-24 16:27:25 來源:動力節點 瀏覽2258次
為什么接口要規定成員變量必須是public static final的呢?
答:
首先接口是一種高度抽象的”模版”,,而接口中的屬性也就是’模版’的成員,就應當是所有實現”模版”的實現類的共有特性,所以它是public static的,是所有實現類共有的.假如可以是非static的話,因一個類可以繼承多個接口,出現重名的變量,如何區分呢?
其次,接口中如果可能定義非final的變量的話,而方法又都是abstract的,這就自相矛盾了,有可變成員變量但對應的方法卻無法操作這些變量,雖然可以直接修改這些靜態成員變量的值,但所有實現類對應的值都被修改了,這跟抽象類有何區別?又接口是一種更高層面的抽象,是一種規范、功能定義的聲明,所有可變的東西都應該歸屬到實現類中,這樣接口才能起到標準化、規范化的作用。所以接口中的屬性必然是final的。
最后,接口只是對事物的屬性和行為更高層次的抽象。對修改關閉,對擴展(不同的實現implements)開放,接口是對開閉原則(Open-Closed Principle)的一種體現。
接口的所有成員都應該公開,所以是public(我覺得因為接口必須被他類實現,所以必須為public)
接口不能實例化,所以只有靜態成員:static(非static成員變量必須通過對象進行操作,而接口不能實例化,所以只能為static)
接口的成員一定應該是常量,所以是final。(這個正如上面所解釋的,如果接口的成員是變量,而一旦實現的類改變了該值,則所有實現類都被改變了,因為static)
interface在設計角度上通俗的定義standard(標注),從面向對象來說我們可以把它看做一個USB接口,所以:
既然是標準,那就應該向外開放,于是接口的所有成員都應該public
既然是標準,那就不能輕易改變,而且要滿足開放性,于是變量需要static(滿足開放性),final(滿足不可變性)
以上就是動力節點java培訓機構的小編針對“Java深入學習的必須知識點之一”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關閱讀
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習