從宏觀的角度來看,對象是類的實例。比如:











這時,我們會象通常所說的那樣講到:我們創建了一個名為nemo的Someone類的對象(是的,這沒有錯,但它會和下文所講的一些內容產生些許理 解上的困惑)。因為每當創建類的一個實例(昵稱為nemo的某人),就創建該類的一個對象(名為nemo的Someone類的對象),而每個對象自身包含 類中定義的所有實例變量(age,sex,name等)的一個拷貝,所以說對象nemo是Someone類的實例。順便,我們再創建一個名為andy的 Someone類的對象:

對象nemo和對象andy是相同的嗎?他們僅僅是名字不同而已嗎?不——因為每個對象的變量的值不同!比如:



所以nemo和andy是兩個不同的對象,唯一相同的是它們都屬於同一種類型——Someone類!
而從微觀的角度來看,我們前面所說的“對象nemo”真的是對象嗎?你可能會奇怪我怎么會這么問...
實際上,
Someone nemo = new Someone();
這一創建一個Someone類的對象的過程分為兩步:






此時,對於nemo的理解應該是:nemo是一個引用新創建的Someone類對象的變量(如同c語言的指針變量),它本身並不是一個對象!
| ——|————>100| 20 | age
| “男” | sex
| “尼 莫” | name
現 在你理解了為什么說類是引用類型了吧?——類對象通過引用來訪問呀!同時,也說明了為什么上文說“nemo和andy是兩個不同的對象”——運行時為對象 動態分配內存,所以兩個對象所在的內存地址不同,當然兩個對象是不同的咯!——等等,你剛剛不是說nemo是引用變量嗎?怎么又說“nemo... 是...對象”了呢?
筆者在初學時在理解上存在這樣的困惑!
但是,你可能注意到了,Someone是一個類,而nemo自然就是聲明為這個類的一個變量;而類作為一種類型,它是屬於引用類型,所以nemo自然就是一個引用類型的變量即引用變量了啊。
關鍵的一點是,我們可以從不同的角度來看這一問題:宏觀上,nemo是對象;而微觀上,深層的理解,nemo是引用變量。