第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對象和實例之間的區(qū)別

對象和實例之間的區(qū)別

我知道以前曾提出 過這樣的問題,但是我仍然覺得答案太模糊了,以至于我(以及某些/大多數(shù)初學(xué)者)都難以理解。我一直在嘗試自學(xué)比程序和基本OOP更廣泛的編程概念。我了解OOP的具體概念(您創(chuàng)建一個具有數(shù)據(jù)(成員)和函數(shù)(方法)的類,然后在運行時實例化該類以實際執(zhí)行此類操作。我認(rèn)為我對類的含義有所了解(某種實例的設(shè)計藍圖,該實例在編譯時以其相似性創(chuàng)建)。但是如果是這樣,什么是物體?我也知道,在基于原型的語言中,這甚至可以使事情變得更糟,但這也許就是為什么在我的腦海中需要對對象和實例進行清楚的區(qū)分。除此之外,我還與“對象”和“實例”的概念作斗爭。我閱讀了很多資源(包括SO的答案),它們在很大程度上是相同的,并且在語義上有所不同。別人說這兩者之間存在真正的概念差異。SO的專家可以幫助初學(xué)者擁有在OOP領(lǐng)域前進的“啊哈”時刻嗎?再次感謝。注意:這不是家庭作業(yè),我不上學(xué)-但是,我認(rèn)為這會對尋求家庭作業(yè)幫助的人有所幫助。
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

房屋設(shè)計的藍圖就像一個班級描述。根據(jù)該藍圖建造的所有房屋均為該類別的對象。給定的房子是一個實例。


查看完整回答
反對 回復(fù) 2019-11-05
?
侃侃無極

TA貢獻2051條經(jīng)驗 獲得超10個贊

事實是,面向?qū)ο蟮木幊掏ǔㄟ^在開發(fā)的哲學(xué)方面與計算機的實際機械工作之間建立脫節(jié)而造成混亂。我將嘗試為您對比兩者:


OOP的基本概念是:類>>對象>>實例。


類別=藍圖。對象是基于“藍圖”(如房屋)構(gòu)建的實際事物。實例是對象的虛擬副本(而不是真實副本)。


“實例”的更多技術(shù)解釋是它是“內(nèi)存引用”或引用變量。這意味著“實例”是內(nèi)存中僅其中有一個對象的內(nèi)存地址。它處理的對象與實例被稱為“實例”的對象相同。如果您有一個對象的許多實例,您實際上只是在內(nèi)存中不同位置上有許多變量,而這些變量中都有相同的確切內(nèi)存地址-都是相同的確切對象的地址。盡管看起來好像可以在代碼中進行更改,但是您永遠無法“更改”實例。當(dāng)您“更改”實例時,您真正要做的就是直接更改原始對象。在電子上,處理器在更改原始對象的數(shù)據(jù)之前會先經(jīng)過內(nèi)存中的一個額外位置(參考變量/實例)。


過程是:處理器>>實例的內(nèi)存位置>>原始對象的內(nèi)存位置。


請注意,使用哪個實例都沒有關(guān)系-最終結(jié)果將始終相同。所有實例將繼續(xù)在其內(nèi)存位置(對象的內(nèi)存地址)中保留相同的確切信息,只有對象會更改。


類和對象之間的關(guān)系有些混亂,盡管從哲學(xué)上講它是最容易理解的(藍圖>>房子)。如果對象是保存在內(nèi)存中某處的實際數(shù)據(jù),那么“類”是什么?事實證明,從機械上講,該對象是該類的精確副本。因此,該類只是內(nèi)存中其他地方的另一個變量,它擁有與對象相同的確切信息。注意關(guān)系之間的區(qū)別:


對象是類的副本。實例是保存對象的內(nèi)存地址的變量。


您還可以具有相同類的多個對象,然后每個對象具有多個實例。在這些情況下,每個對象的實例集的值相等,但是對象之間的實例不相等。例如:


讓A類從A類讓Object1,Object2和Object3。


// Object1具有與object2和object3相同的精確值,但是它們在內(nèi)存中的位置不同。


來自O(shè)bject1 >>讓obj1_Instance1,obj1_Instace2,obj1_Instance3


//所有這些實例的值也相等,并且在內(nèi)存中的不同位置。它們的值= Object1.MemoryAddress。


等等


當(dāng)您開始引入類型時,事情會變得更加混亂。這是一個使用c#類型的示例:


//假定類Person存在Person john = new Person();


實際上,如果將代碼分為兩部分,則更易于分析:


Person john;

john = new Person();

用技術(shù)術(shù)語來說,第一行“聲明了一個類型變量人。但是,這是什么意思??一般的解釋是,我現(xiàn)在有一個只能容納一個Person對象的空變量。但是請稍等-它是一個空變量!該變量的存儲位置中沒有任何內(nèi)容。事實證明,“類型”在機械上是沒有意義的。類型最初是作為管理數(shù)據(jù)的一種方式發(fā)明的。即使您聲明基本類型,例如int,str,chr(無需初始化),計算機內(nèi)也不會發(fā)生任何事情。程序設(shè)計的這種奇怪的語法方面是使人們認(rèn)識到類是對象的藍圖的一部分。OOP對帶有委托類型,事件處理程序等的類型變得更加困惑。我不會嘗試過多地關(guān)注它們,而只是記住它們都是用詞不當(dāng)。


第二行也有點混亂,因為它一次執(zhí)行兩項操作:


首先評估右側(cè)的“ new Person()”。它創(chuàng)建了Person類的新副本-即,它創(chuàng)建了一個新對象。


然后在左側(cè)評估“ john =“”。它將john變成一個引用變量,為它提供剛在同一行右側(cè)創(chuàng)建的對象的內(nèi)存地址。


如果您想成為一名優(yōu)秀的開發(fā)人員,那么一定要理解,沒有任何計算機環(huán)境能夠基于哲學(xué)理想而工作,這一點很重要。計算機甚至沒有那么邏輯-它們實際上只是一大堆電線,這些電線使用基本的布爾電路(主要是NAND和OR)粘合在一起。


查看完整回答
反對 回復(fù) 2019-11-05
  • 3 回答
  • 0 關(guān)注
  • 1029 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號