1秒登錄
JAVA語法規定,接口中的變量默認自動隱含是public static final! 為什么需要這樣定義? 接口的目的 OOP中一個很重要的概念就是封裝,對象可以通過public interface的設計,來提供一系列方法,讓用戶能夠利用利用對象來完成需要的任務。然而,內部的實現細節對用戶是隱藏的,目的是為了對具有共同特點的類,能夠用相同的方法來使用,並且可以進行類的轉換。 例如,考慮為你的VCR,DVD播放,磁帶錄音機,CD,鐳射磁盤播放器,編寫一個家用的統一遙控器,遙控器對5個設備來說,有相同的按鈕,播放,停止,快進,重復,暫停 你可能注意到,沒有啟動,打開鐳射,打開磁鐵等等按鈕,這些細節是隱藏的,不是由於必要的安全原因, 更正確的是因為這些是具體設備的實現部分,從而能夠方便從設備到設備的切換,並且不針對到所有的設備。 接口的主要目的,是提供設備中那些對用戶是可用的細節(遙控器)。這就是為什么接口中所有的方法默認隱含是public的:這些方法本意就是對用戶是可訪問的。這就是接口的使用目的。 OOP另外一個重要的設計原則,在幾乎所有的情況下,一個好的對象設計不會提供給客戶直接訪問它的實例變量的能力。通常,那些對象應該對變量定義訪問和獲取方法來實現變量的操作。 這樣,設計者可以設置合理的限制條件在那些變量上 因此,public的實例變量不應該是好的接口定義的一部分,他們不能在java的接口中定義。 然而public static final修飾用於定義java中的常量,前提是那些需要定義的常量是不能改變的,這樣就可以直接讓他們暴露在類的public interface中, 這就是為什么變量在接口中必須是static(同樣必須public和final的) 從這段翻譯: http://forum.java.sun.com/thread.jspa?threadID=741407&messageID=4251167 個人的理解: public: public的原因就不用講了,接口定義的都是對用戶可以使用的部分。 final: 變量屬於類的細節,應該被隱藏,public的變量,在類中不是很好的設計,沒有體現封裝的開閉原則 static:final是用來定義常量的,僅僅是final在類中static段也是可以改變的,所以必須是static final 附例: class C { static final int X; static { X = 17; } } interface I { int Y; static { Y = 17; } }
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。