.NET基礎(chǔ)第八、九天


一、面向過(guò)程--------> 面向?qū)ο?/h1>
面向過(guò)程:面向的是完成這件事的過(guò)程,強(qiáng)調(diào)的是完成這件事的動(dòng)作
如果我們用面向過(guò)程的思想來(lái)解決這件事,當(dāng)執(zhí)行這件事的人不同的時(shí)候,我們需要為每個(gè)不同的人量身定做解決事情的方法
面向?qū)ο螅赫覀€(gè)對(duì)象幫你完成這件事,意在寫(xiě)出通用的代碼,屏蔽差異
二、萬(wàn)物皆對(duì)象
我們?cè)诖a中描述一個(gè)對(duì)象,通過(guò)描述這個(gè)對(duì)象的屬性和方法
我們把這些具有相同屬性和相同方法的對(duì)象進(jìn)行進(jìn)一步封裝,抽象出來(lái)類這個(gè)概念。
類就是個(gè)模子,確定了對(duì)象應(yīng)該具有的屬性和方法。
對(duì)象是根據(jù)類創(chuàng)建出來(lái)的。
類就是一個(gè)蓋大樓的圖紙,而對(duì)象就是蓋出來(lái)的樓。
三、類
語(yǔ)法:
寫(xiě)好了一個(gè)類之后,我們需要?jiǎng)?chuàng)建這個(gè)類的對(duì)象,
那么,我們管創(chuàng)建這個(gè)類的對(duì)象的過(guò)程 稱之為類的實(shí)例化
使用關(guān)鍵字 new
this:表示當(dāng)前這個(gè)類的對(duì)象
類是不占內(nèi)存的,而對(duì)象是占內(nèi)存的‘
***結(jié)構(gòu)和類的寫(xiě)法雖然非常相似,但是結(jié)構(gòu)struct 不具備面向?qū)ο蟮奶卣鳎ǚ庋b、繼承、多態(tài)) 結(jié)構(gòu)是面向過(guò)程的
而類具有面向?qū)ο蟮奶卣?/strong>
四、屬性
屬性的作用就是保護(hù)字段,對(duì)字段的賦值和取值進(jìn)行限定
屬性的本質(zhì)就是兩個(gè)方法,一個(gè)叫g(shù)et() 一個(gè)叫set()
get()取值 set()賦值
既有g(shù)et()也要set() 我們稱之為可讀可寫(xiě)屬性
只有g(shù)et()沒(méi)有set() 只讀屬性
只有set() 沒(méi)有g(shù)et() 只寫(xiě)屬性(很少用到)
當(dāng)我們創(chuàng)建好一個(gè)類的對(duì)象后,需要給這個(gè)對(duì)象的每個(gè)屬性去賦值
我們管這個(gè)過(guò)程稱之為對(duì)象的初始化
五、訪問(wèn)修飾符
public:公開(kāi)的公共的 在哪都能訪問(wèn)
private:私有的,只有在當(dāng)前類的內(nèi)部才能進(jìn)行訪問(wèn),出了這個(gè)類就訪問(wèn)不到了
六、靜態(tài)和非靜態(tài)的區(qū)別
在非靜態(tài)類中,既可以有實(shí)例成員(非靜態(tài)成員),也可以有靜態(tài)成員
在調(diào)用實(shí)例成員的時(shí)候,需要使用 對(duì)象名.實(shí)例成員;
在調(diào)用靜態(tài)成員的時(shí)候,需要使用類名.靜態(tài)成員名;
總結(jié):靜態(tài)成員必須使用類名去調(diào)用,而實(shí)例成員使用對(duì)象名去調(diào)用
靜態(tài)函數(shù)中, 只能訪問(wèn)靜態(tài)成員,不允許訪問(wèn)實(shí)例成員
實(shí)例函數(shù)中,既可以使用靜態(tài)成員,也可以使用實(shí)例成員
靜態(tài)類中只允許有靜態(tài)成員,不允許出現(xiàn)實(shí)例成員
七、使用
如果你想要把你的類當(dāng)作一個(gè)”工具類“去使用,這個(gè)時(shí)候可以考慮將類寫(xiě)為靜態(tài)的
靜態(tài)類在整個(gè)項(xiàng)目中資源共享? 只有在程序全部結(jié)束后,靜態(tài)類才會(huì)釋放資源
八、內(nèi)存
堆? ? 棧? ? 靜態(tài)存儲(chǔ)區(qū)
釋放資源? ?GC? Garbage Collection
九、構(gòu)造方法(函數(shù))??
構(gòu)造方法用來(lái)創(chuàng)建對(duì)象,并且可以在構(gòu)造函數(shù)中對(duì)對(duì)象進(jìn)行初始化
作用:幫助我們初始化對(duì)象(給對(duì)象的每個(gè)屬性依次賦值)
構(gòu)造函數(shù)是一個(gè)特殊的方法:
????1)構(gòu)造函數(shù)沒(méi)有返回值 連void也不能寫(xiě)
????2)構(gòu)造函數(shù)的名稱必須和類名一致
????3)構(gòu)造函數(shù)可以有參數(shù),new對(duì)象的時(shí)候傳遞函數(shù)參數(shù)即可
????4)如果不指定構(gòu)造函數(shù),則類有一個(gè)默認(rèn)的無(wú)參構(gòu)造函數(shù)
????5)如果指定了構(gòu)造函數(shù),則不再有默認(rèn)的無(wú)參構(gòu)造函數(shù),如果需要無(wú)參構(gòu)造函數(shù),則需要自己來(lái)寫(xiě)
創(chuàng)建對(duì)象的時(shí)候會(huì)執(zhí)行構(gòu)造函數(shù)
***??
類中會(huì)有一個(gè)默認(rèn)的無(wú)參數(shù)的構(gòu)造函數(shù),當(dāng)你寫(xiě)了一個(gè)新的構(gòu)造函數(shù)后,不管是有參數(shù)的,還是無(wú)參數(shù)的,那個(gè)默認(rèn)無(wú)參數(shù)的都被干掉了
***
構(gòu)造函數(shù)可以重載,也就是有多個(gè)參數(shù)不同的構(gòu)造函數(shù)
十、關(guān)鍵字new、this
Person zsPerson=new Person();
new幫助我們做了三件事:
????1)在內(nèi)存中開(kāi)辟一塊空間
????2)在開(kāi)辟的空間中創(chuàng)建對(duì)象
????3)調(diào)用對(duì)象的構(gòu)造函數(shù)進(jìn)行初始化對(duì)象
this關(guān)鍵字的作用
????1)代表當(dāng)前類的對(duì)象
????2)在類中顯式的調(diào)用本類的構(gòu)造函數(shù)? 語(yǔ)法? :this