Java接口中的成員變量爲什麼必須聲明爲public static final?

我想對於每個Java程序員來說,接口都不陌生,接口中的方法也經常使用。而接口中的成員變量,就顯得用得少一點,而對於成員變量爲什麼必須聲明爲public static final,
可能就更不清楚了,而且我覺得大多數不清楚爲什麼要用 static 和 final。下面我們就來解釋一下。

一、爲什麼要用final?

  首先,我們應該明白一個問題。接口,實際上比抽象類更加抽象,它是最高層次的抽象。接口中的所有方法都是抽象方法,不會有任何實現方面的代碼,而它的具體實現是要靠實現這個接口的具體類來具體實現的。而且,這個接口中的方法是不可更改的。同樣的,接口中的變量也是不可更改的。所以,要聲明爲final。

接口是一種協議,協議是所有實現接口的類都必須遵守的。如果變量不是final,那麼每個實現接口的類就可以更改這個變量的值,也就違反了OCP原則。

二、爲什麼要用static?

  至於這個問題,是和Java語言的本身機制有關。我們知道Java不支持多繼承,但是一個類可是現實多個接口。我們假設有兩個接口A和B,而類C實現了接口A和B。假設,此時,A和B中都有一個變量N,如果N不是static類型的,那麼在C中該如何區分N到底是A的還是B的呢?而,如果是static類型的,我們可以通過A.N和B.N來區別調用A或者B中的成員變量N。

轉載:http://www.cnblogs.com/chengdabelief/p/6204281.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章