DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

对象与实例的区别

这真是个无聊的话题,在之前我一直以为这是一件事情的两个叫法,到后来看 <<精通EJB>>一书,书中对这两个的概念明显是有些区别的,于是开始搜索一下。找了很多地方都没有答案,同时发现这个问题也不只是我一个人的问题,很多地方都在讨论。例如这些地方
http://forum.java.sun.com/thread.jspa?threadID=654144&messageID=3845005
http://www.geekinterview.com/question_details/17747

而且很多地方有对象实例  instance of object 的写法。真是让人迷惑啊。
查了一些资料,经过分析,现在觉得这个结论还是比较容易让人理解:
类-->对象-->实例
人类是类
某个人是对象
你是实例
实例本身也是对象。

表现出来是这样的
String 类
String str   str是对象
String str = "abc";  "abc"是实例,也是对象.
这样也能解释instance of object这种说法  str的实例是"abc"

暂时先这么理解,希望有人能提出更好的理解方法和见解。。。

posted on 2007-03-04 13:47 dreamstone 阅读(19175) 评论(20)  编辑  收藏 所属分类: jdk相关

评论

# re: 对象与实例的区别 2007-03-04 16:12 我为J狂

老外就是喜欢钻牛角尖,累不累呀!有什么意义吗?
下面是我的一点看法,希望这种无聊的讨论不要继续下去了。
例如:
Student是一个类,
语句
Student s; //只是声明了一个引用,并不关联到特定的实例
Student s = new Student();
上面语句实例化了一个Student对象,new Student()是调用类的构造函数产生实例。最后让引用和实例相关。
所以对象的引用和实例是不同的。s 是Student对象或实例的引用。对象和实例的概念是相同的。
如果仅用
Student s;
声明引用后,无法调用object的属性和方法,因为它并不和任何实例相关   回复  更多评论   

# re: 对象与实例的区别 2007-03-05 15:10 wanglinghua

我觉得对象和实例是一个概念,也可以说成实例对象。 - 个人理解  回复  更多评论   

# re: 对象与实例的区别 2007-03-05 19:13 dreamstone

@我为J狂
这个和钻牛角尖没有关系,在这点上大部分老外做的更好,他们会投入很大经历去分析一个又一个问题,然后得出结论,然后严格遵守。而我们大部分人则习惯做的时候临时思考,经常在相同的问题上得出不同的答案。这也是为什么国人聪明(世界公认),但在近代大师越来越少(浮躁是一个重要的原因,不求甚解啊)。

我自己就经常犯这样的错误,很多问题一遍又一遍,虽然学习知识本来就是个渐进过程,但因为容易满足造成的多次学习还是有很大一部分。

另外我看了不少Ejb的资料里变都会用到"Ejb对象" "企业Bean"实例,这样分开的说法。如果没有必要区别的话,其实"Ejb对象" "企业Bean"对象 或者"EJB实例" "企业Bean实例"的说法可能更容易让人接受,为什么分开其实是有一些道理的,可以自己细细品味一下。

个人感觉由于语言的差异,很多用英语解释很简单的,换成中文解释就很麻烦。
所以平时看书的时候很喜欢中文,但到一些关键点还喜欢拿英文原文来对比一下。我想这也是候捷等人在翻译书的时候保留一些词语的原文的原因.  回复  更多评论   

# re: 对象与实例的区别 2007-03-05 19:19 dreamstone

@wanglinghua
有没有区别是分场合的,比如我的例子中的某个人和张三.
如果我给李四讲张三的趣事,说某个人和说张三是没有区别的。 因为张三也是某个人。某个人也可以替代张三。
但如果我说的是发工资呢,我把"把工资发给张三"换成"把工资发给某个人"怕张三会来找我打架吧。认为没有区别是因为还没有遇到有区别的情况,就象泥一直在讲故事,无论是张三也好,李四也好,某个人也好是一样的。

话题扯远了,其实这个文章开始就说明这篇文章并不值得讨论,只是为了让一些和我一样对这个问题产生疑惑的人尽快解决这个问题,而不至于在一个字眼上浪费太多的时间。
  回复  更多评论   

# re: 对象与实例的区别 2007-03-05 22:13 我为J狂

@dreamstone
看来您是误解我的意思了,我不是推荐大家浮躁,不求甚解,而是不要研究那些老外发明的文字游戏。Java是外国人发明的,大家都知道,对于老外东西的学习,要取其精华取其糟粕,他们经常发明一些同一概念的不同名词,来宣扬自己科学的伟大,甚至对于人类登月的照片都可以造假,决不能迷信他们的东西,我们要相信自己民族的能力,不要盲从他们的理论,对于他们所谓的“对象”还是“实例”的争论,还是适可而止吧!  回复  更多评论   

# re: 对象与实例的区别 2007-03-10 01:31 ...

对象是一个统称
可以分为类对象和实例对象
类对象是实力对象的模版
类似的概念有原类(metaclass),是类的模版  回复  更多评论   

# re: 对象与实例的区别 2007-06-13 11:04 老灯

头晕眼花  回复  更多评论   

# re: 对象与实例的区别 2007-11-30 01:39 111

str是引用reference 不是object "abc"是对象object也叫实例insatnce  回复  更多评论   

# re: 对象与实例的区别[未登录] 2007-11-30 13:26 dreamstone

补充一些内容:
对象的产生有两种基本方式。一种是以原型(prototype)对象为基础产生新的对象。一种是以类(class)为基础产生新对象。原型的概念已经在认知心理学中被用来解释概念学习的递增特性,原型模型本身就是企图通过提供一个有代表性的对象为基础来产生各种新的对象,并由此继续产生更符合实际应用的对象。而原型-委托也是OOP中的对象抽象,代码共享机制中的一种。一个类提供了一个或者多个对象的通用性描叙。从形式化的观点看,类与类型有关,因此一个类相当于是从该类中产生的实例的集合。而这样的观点也会带来一些矛盾,比较典型的就是在继承体系下,子集(子类)对象和父集(父类)对象之间的行为相融性可能很难达到,这也就是OOP中常被引用的---子类型(subtype)不等于子类(subclass)[Budd 2002]。而在一种所有皆对象的世界观背景下,在类模型基础上还诞生出了一种拥有元类(metaclass)的新对象模型。即类本身也是一种其他类的对象。以上三种根本不同的观点各自定义了三种基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型。而这三种对象模型也就导致了许多不同的程序设计语言(如果我们暂时把静态与动态的差别放在一边)。是的,我们经常接触的C++,Java都是使用基于类的对象模型,但除此之外还有很多我们所没有接触的OOPL采用了完全不一样的对象模型,他们是在用另外一种观点诠释OOP的内涵。

相对应的Java中产生对象的方法:
1, new Class()
2,Object.clone()

应该就是对象实例,类实例区别吧。
由类来产生,由对象来产生。

对应js中的prototype的方式来实现各种oo
  回复  更多评论   

# re: 对象与实例的区别 2008-04-01 13:43 不懂

我说不清楚,但是在某些情况下,对象和实例是又区别的。  回复  更多评论   

# re: 对象与实例的区别 2008-04-25 13:14 qiqig35b

我觉得楼主这个比喻很对。  回复  更多评论   

# re: 对象与实例的区别[未登录] 2008-04-27 16:02 zz

楼主这个比喻不错,支持楼主!  回复  更多评论   

# re: 对象与实例的区别 2008-08-18 09:58 陈炬

你说的内容跟我的知识有很大冲突哦,hoho。
我觉得没有什么区别,不是常常有这样的说法的么:object is an instance of class....
另外instance of object, 会不会这个object是指java的Object类啊?  回复  更多评论   

# re: 对象与实例的区别 2008-08-18 10:04 陈炬

@dreamstone
确实,在许多地方一个object也可以有许多instance的,就是一个object也可以看成是类。
比如,在语义网的RDF规范中,就是如此。人是生物的instance,张三是人的instance....一个具体化的过程。
但是具体到java语言,我觉得java里面instance跟object是一回事情。  回复  更多评论   

# re: 对象与实例的区别 2009-04-15 18:14 不知道

@不懂
  回复  更多评论   

# re: 对象与实例的区别 2010-01-24 15:40 Kite

类仅仅是一个概念。
对象具有群体性
实例是一个具体的对象。

类的对象和实例是有区别的。  回复  更多评论   

# re: 对象与实例的区别 2011-06-03 14:35 无名网友

我觉得很简单,类-对象-实例,无非就是类型,该类型所声明的变量,变量所存储的内容。  回复  更多评论   

# re: 对象与实例的区别 2014-03-25 14:12 呃呃

@Kite
这说法不错  回复  更多评论   

# re: 对象与实例的区别[未登录] 2015-03-18 08:01 jason

类可以比喻一个大盒子,对象是大盒子里面的零散的东西,而实例是大盒子里面的很多小盒子,小盒也可以装对象那种,对不对,各位大神?。。来自初学者的浅谈,,,  回复  更多评论   

# re: 对象与实例的区别[未登录] 2015-08-19 10:13 jackson

@jason
没有章法的理解方式,我只能说:不对  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: