我在项目中看到一个类里定义的变量都是public static final的,问了一下同事说是常量类,为什么要这么定义呢?是因为static是全局的,final是不可修改的吗?那这和定义一个private变量再定义一个get方法有什么区别?
大家讲道理2017-04-18 10:30:39
static是為了讓其成為類別的成員,而不是物件的成員,這樣用起來就方便了
public是為了方便訪問
final則是表示這是常數,不能修改
private的對象,然後定義get、set是為了存取控制,是一種常規的封裝
綜上,public static final
可以讓訪問變得很方便,而且不會被修改。一般可以放配置訊息,還有一些狀態碼的定義。
static修飾的物件是放在引用的根下的,意味著幾乎不會被回收
PHP中文网2017-04-18 10:30:39
static 是靜態的這樣被static修飾過得變量,可以直接用過類名.變量名的方式調用, 而不需要通過類的實例化對象引用
final 修飾變量多用於聲明一個常量在變量被第一次賦值了之後,這個變數就相當於一個常數或是可以理解成這個變數的值固定了,值無法被修改
伊谢尔伦2017-04-18 10:30:39
靜態常數 舉個栗子
public class Constant {
public static final int DEAFULT_TAG = 0xcc33;
public static final int DEFAULT_VERSION = 1;
public static final Long PHOTO_PRICE = 1L;
public static final String OSS_STYLE = "?x-oss-process=style/photo_printer";
}
上邊的 Constant
做為一個常數類,我在其餘各種地方需要調用常數的時候
直接使用 Constant.OSS_STYLE
就好了