對象和執行個體有什麼區別?
對象和執行個體從宏觀的角度看,區別是:對象是同類事物的一種抽象表現形式,而執行個體是對象的具體化,一個對象可以執行個體化很多執行個體,對象就是一個模型,執行個體是照著這個模型生產的最終產品。實際上就是這樣,一個對象可以執行個體化N個執行個體。就像根據一個模型可以製造多個執行個體的產品一樣。
從記憶體配置的角度來看,對象是儲存在堆中的,而執行個體是儲存中棧中的,執行個體其實只是對象的一個引用,也就是指向對象的指標。
舉個形象的例子。肯德基裡有雞翅膀。假設你去麥當勞買雞翅膀,那菜單上的雞翅膀就是雞翅膀類,架子上的雞翅膀們呢是雞翅膀對象,而你啃到的那個雞翅膀,就是雞翅膀執行個體。
Class 雞翅膀
雞翅膀 炸雞翅 (對象)
雞翅膀 炸雞翅 = new 一個炸雞翅 (一個炸雞翅就是對象的執行個體,同時也是一個對象)
很多地方有對象執行個體 instance of object 的寫法。真是讓人迷惑啊。
查了一些資料,經過分析,現在覺得這個結論還是比較容易讓人理解:
類-->對象-->執行個體
人類是類
某個人是對象
你是執行個體
執行個體本身也是對象。
表現出來是這樣的
String 類
String str str是對象
String str = "abc"; "abc"是執行個體,也是對象.
這樣也能解釋instance of object這種說法 str的執行個體是"abc"
暫時先這麼理解,希望有人能提出更好的理解方法和見解。。。
對象是指建立在堆棧中的引用名
執行個體是指建立在堆中的類的具體一個表現
一般我們講申明一個對象,建立一個執行個體
申明一個對象就像String s;,只是一個空的沒有引用的變數名
建立一個執行個體就是調用類的構造器 new ClassConstrutor();,在記憶體中分配了具體空間,但並沒有把它賦給任何一個引用,所以你不能調用到它
將2者結合起來才是一個完整的對象建立過程。
String s = new String();
(把具體執行個體地址存放在對象中)