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 閱讀(19334) 評論(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
          沒有章法的理解方式,我只能說:不對  回復  更多評論   

          主站蜘蛛池模板: 伽师县| 灌阳县| 托克托县| 华宁县| 苗栗市| 乐亭县| 聂拉木县| 临澧县| 寿阳县| 武穴市| 石景山区| 桓台县| 双流县| 隆化县| 吉林省| 溧水县| 社旗县| 遂平县| 和平县| 镇平县| 宁乡县| 霍邱县| 禹城市| 紫金县| 广丰县| 金乡县| 青州市| 法库县| 恭城| 南木林县| 白玉县| 武隆县| 文成县| 微博| 沾益县| 慈利县| 伊宁市| 漾濞| 连江县| 阳西县| 安岳县|