在《Thinking in Java》一書裏提到:“每個對象都是某個類(class)的一個實例,這裏類就是類型的意思”。
通俗地說,實例表示的是對象和類的關係
比如:
Person b=new Person();
new Person()新建了一個Person對象,而b則是一個指向Person對象的引用,這個Person對象就是Person類的一個實例。
此時,可以認爲實例和對象是一樣的概念。
Person b=new Person("a");
new Person();是一個對象,放在堆(heap)空間。
a屬於new Person()裏面的是一個實例(放在常量池中)。
b屬於一個引用,放在棧(stack)空間,要操作對象必須通過引用間接操作。
這個地址是指向new Person()這個對象的。
棧:存放基本類型的數據和對象的引用,但對象本身不存放在棧中,而是存放在堆中
堆:存放用new 產生的數據
如果是出現多態的話,
//Child extends Person
Person person = new Child();
可以看出new Child()這個實例化過程顯然並沒有將Child類的所有函數實例化,因爲person是無法調用Child類獨有的方法的。
所以只是部分實例化,這也表現了實例和對象之間的區別。