对象和实例有什么区别?
对象和实例从宏观的角度看,区别是:对象是同类事物的一种抽象表现形式,而实例是对象的具体化,一个对象可以实例化很多实例,对象就是一个模型,实例是照着这个模型生产的最终产品。实际上就是这样,一个对象可以实例化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();
(把具体实例地址存放在对象中)