溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

接口中定義變量必須為public static final的原因是什么

發(fā)布時間:2020-11-05 17:41:26 來源:億速云 閱讀:389 作者:Leah 欄目:編程語言

接口中定義變量必須為public static final的原因是什么?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

首先接口是一種高度抽象的"模版",,而接口中的屬性也就是’模版’的成員,就應(yīng)當(dāng)是所有實現(xiàn)"模版"的實現(xiàn)類的共有特性,所以它是public 的 ,是所有實現(xiàn)類共有的 .否則具體實現(xiàn)類不能使用該變量,則就沒有了定義的意義。 
static的原因是,假如可以是非static的話,因一個類可以繼承多個接口,出現(xiàn)重名的變量,如何區(qū)分呢?所以必須定義成static的,以便區(qū)分。 
例如一個類實現(xiàn)了兩個不同的接口,這兩個接口中有相同名字的變量定義,示例代碼如下:  
 

public class MultiInmpl  implements InTF, InTFOther { 
           /** 
          * @param args 
          */ 
           public static void main(String[] args) { 
           // TODO Auto-generated method stub 
           MultiInmpl m = new MultiInmpl(); 
           //如果實現(xiàn)的接口中有同名的變量,則不能引用 
          System.out.println( m.str );//str在2個接口中都有定義 
     } 
}  

其次,接口中如果可能定義非final的變量的話,而方法又都是abstract的,這就自相矛盾了,有可變成員變量但對應(yīng)的方法卻無法操作這些變量,雖然可以直接修改這些靜態(tài)成員變量的值,但所有實現(xiàn)類對應(yīng)的值都被修改了,這跟抽象類有何區(qū)別? 又接口是一種更高層面的抽象,是一種規(guī)范、功能定義的聲明,所有可變的東西都應(yīng)該歸屬到實現(xiàn)類中,這樣接口才能起到標準化、規(guī)范化的作用。所以接口中的屬性必然是final的。

看完上述內(nèi)容,你們掌握接口中定義變量必須為public static final的原因是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI