新聞中心
接口中定義變量必須為public static final的原因是什么?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)建站電話聯(lián)系:028-86922220,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),創(chuàng)新互聯(lián)建站網(wǎng)頁(yè)制作領(lǐng)域十余年,包括成都格柵板等多個(gè)行業(yè)擁有豐富的網(wǎng)站營(yíng)銷經(jīng)驗(yàn),選擇創(chuàng)新互聯(lián)建站,為網(wǎng)站保駕護(hù)航。
首先接口是一種高度抽象的"模版",,而接口中的屬性也就是’模版’的成員,就應(yīng)當(dāng)是所有實(shí)現(xiàn)"模版"的實(shí)現(xiàn)類的共有特性,所以它是public 的 ,是所有實(shí)現(xiàn)類共有的 .否則具體實(shí)現(xiàn)類不能使用該變量,則就沒有了定義的意義。
static的原因是,假如可以是非static的話,因一個(gè)類可以繼承多個(gè)接口,出現(xiàn)重名的變量,如何區(qū)分呢?所以必須定義成static的,以便區(qū)分。
例如一個(gè)類實(shí)現(xiàn)了兩個(gè)不同的接口,這兩個(gè)接口中有相同名字的變量定義,示例代碼如下:
public class MultiInmpl implements InTF, InTFOther {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MultiInmpl m = new MultiInmpl();
//如果實(shí)現(xiàn)的接口中有同名的變量,則不能引用
System.out.println( m.str );//str在2個(gè)接口中都有定義
}
}
其次,接口中如果可能定義非final的變量的話,而方法又都是abstract的,這就自相矛盾了,有可變成員變量但對(duì)應(yīng)的方法卻無法操作這些變量,雖然可以直接修改這些靜態(tài)成員變量的值,但所有實(shí)現(xiàn)類對(duì)應(yīng)的值都被修改了,這跟抽象類有何區(qū)別? 又接口是一種更高層面的抽象,是一種規(guī)范、功能定義的聲明,所有可變的東西都應(yīng)該歸屬到實(shí)現(xiàn)類中,這樣接口才能起到標(biāo)準(zhǔn)化、規(guī)范化的作用。所以接口中的屬性必然是final的。
看完上述內(nèi)容,你們掌握接口中定義變量必須為public static final的原因是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
標(biāo)題名稱:接口中定義變量必須為publicstaticfinal的原因是什么
新聞來源:http://fisionsoft.com.cn/article/pejjod.html