Java中單例類和不可變類的理解

2021-06-22 07:53:03 字數 1336 閱讀 7672

1.如果乙個類始終只能建立乙個例項,則這個類被稱為單例類。

思路:public static void main(string args)不建立例項,而是引用類中方法內建立的例項。

建立乙個新物件,使用new,就要使用建構函式。既然是單例,就不能使用建構函式來建立(於是將類中建構函式許可權設定為private),只能引用已有的,用getclassname去呼叫類中方法中建立的僅有只有的乙個例項。沒有new物件,而在public static void main(string args)靜態上下文要引用靜態方法,則類名.method,必須static。

class animal

; public static animal getanimal()

return instance; }}

public class privatefinalmethodtest

}

2.不可變類

final修飾引用物件的變數,則變數指向的物件位址不變,但是物件的內容可以變化。final  int iarr = ,可以賦值iarr[1] = 5,改變物件的內容。而在很多時候,需要類的內容也不可變。例如,建立乙個人的類的例項,若名字作為主鍵,則名字必須不可變。

在person、name類中,主類為person。在主類中,建立乙個private final name name來儲存name類的名字例項name name,但兩者不能指向同乙個位址,也就是不能引用同乙個物件,在賦值的時候,需要new一下,那麼在改動name  name中的量,無關private final name name。同樣在獲取的時候,直接用private final name name來代替name name。

可變和不可變 類的私有屬性

items print id list print id list 但記憶體位址沒有變id 函式獲取記憶體位址。a jack print id a b jack print id b b記憶體位址和上面a一樣 a zhangsan print id a a記憶體位址變了 c zhangsan pri...

java學習筆記4 不可變類

class name public name string firstname string lastname public void setfirstname string firstname public string getfirstname public void setlastname s...

python類的可變型別成員和不可變型別成員的區別

usr bin python coding utf 8 class foo1 object x 1 class foo2 object x f1 foo1 f2 foo2 f1.x 3 print f1.x print foo1.x f2.x 101 3 print f2.x print foo2....