Java中由常量類引起的思考

  咱們都知道,定義一個常量類是十分簡單的。首先差固件一個類,而後類中聲明一些public修飾的靜態常量。沒錯就這麼簡單:spa

  

  寫好以後,在其餘地方使用的時候,直接類名.屬性名就可使用了。blog

  而LZ如今想的是能不能換一種方式來寫,實際效果是同樣的,但逼格會不會高點呢?仁者見仁智者見智啦:接口

  

  你們會發現,不就是類改爲了接口了嗎?而後常量的public static final修飾去掉了嗎?對,沒錯就是這樣。我的以爲逼格高點,同時也能夠反映出開發人員的技術水平。那麼咱們來看一下爲何會等同。咱們將次接口編譯以後再反編譯出來,也許你們就會發現,奧,原來是這樣的。開發

  

  經過反編譯的結果看到,接口變成了抽象接口,屬性都變成了public static final修飾。方法都變成了public abstract修飾。那麼咱們總結一下:接口中能夠含有 變量和方法。可是要注意,接口中的變量會被隱式地指定爲public static final變量(而且只能是public static final變量,用private修飾會報編譯錯誤),而方法會被隱式地指定爲public abstract方法且只能是public abstract方法(用其餘關鍵字,好比private、protected、static、 final等修飾會報編譯錯誤),而且接口中全部的方法不能有具體的實現,也就是說,接口中的方法必須都是抽象方法。從這裏能夠隱約看出接口和抽象類的區別,接口是一種極度抽象的類型,它比抽象類更加「抽象」,而且通常狀況下不在接口中定義變量。編譯

相關文章
相關標籤/搜索