您好,登錄后才能下訂單哦!
接口中定義變量必須為public static final的原因是什么?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
首先接口是一種高度抽象的"模版",,而接口中的屬性也就是’模版’的成員,就應當是所有實現"模版"的實現類的共有特性,所以它是public 的 ,是所有實現類共有的 .否則具體實現類不能使用該變量,則就沒有了定義的意義。
static的原因是,假如可以是非static的話,因一個類可以繼承多個接口,出現重名的變量,如何區分呢?所以必須定義成static的,以便區分。
例如一個類實現了兩個不同的接口,這兩個接口中有相同名字的變量定義,示例代碼如下:
public class MultiInmpl implements InTF, InTFOther {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MultiInmpl m = new MultiInmpl();
//如果實現的接口中有同名的變量,則不能引用
System.out.println( m.str );//str在2個接口中都有定義
}
}
其次,接口中如果可能定義非final的變量的話,而方法又都是abstract的,這就自相矛盾了,有可變成員變量但對應的方法卻無法操作這些變量,雖然可以直接修改這些靜態成員變量的值,但所有實現類對應的值都被修改了,這跟抽象類有何區別? 又接口是一種更高層面的抽象,是一種規范、功能定義的聲明,所有可變的東西都應該歸屬到實現類中,這樣接口才能起到標準化、規范化的作用。所以接口中的屬性必然是final的。
看完上述內容,你們掌握接口中定義變量必須為public static final的原因是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。