




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
今天我們將談到的是C#的類,類類型是由字段數(shù)據(jù)(成員變量)和操作字段數(shù)據(jù)的成員(屬性、方法、構(gòu)造函數(shù)、事件等)所構(gòu)成的自定義類型。AD:類類型是由字段數(shù)據(jù)(成員變量)和操作字段數(shù)據(jù)的成員(屬性、方法、構(gòu)造函數(shù)、事件等)所構(gòu)成的自定義類型。其中字段數(shù)據(jù)表示類實(shí)例(對(duì)象)的狀態(tài)。在C#中,類使用class關(guān)鍵字定義,例如:publicclassCar(//Car的字段(狀態(tài))privateint_speed;privatestring_name;//Car操作字段的屬性publicintSpeedTOC\o"1-5"\h\z(set{this._speed二value;}get(returnthis._speed;}}publicstringName(set(this._name=value;}get(returnthis._name;}}〃顯式定義默認(rèn)構(gòu)造函數(shù)publicCar()(}//自定義構(gòu)造函數(shù)publicCar(stringname,intspeed)(this._name=name;this._speed=speed;}//Car的功能(方法)publicvoidShowState(){Console.WriteLine(〃Car{0}isgoing{1}MPH",this._name,this._speed);}}另:類的字段很少被定義為公開的,為了保護(hù)狀態(tài)數(shù)據(jù)的完整性,最好把字段數(shù)據(jù)定義為私有(或者受保護(hù)的),然后通過屬性對(duì)外提供受控制的訪問。使用new關(guān)鍵字來分配對(duì)象對(duì)象必須使用了new關(guān)鍵字來分配到內(nèi)存,如果不是用new,而隨后嘗試使用類變量的話,會(huì)收到一個(gè)編譯錯(cuò)誤。publicstaticvoidMain(string[]args){
.3.4.〃錯(cuò)誤,忘記使用newCarc;c.Name=〃Bruce”;}1.publicstaticvoidMain(string[]args)1.//創(chuàng)建Car對(duì)象。Carc;//聲明了指向尚未創(chuàng)建的Car對(duì)象的引用。c=newCar("brucewong",150);//通過new把有效的引用賦給對(duì)象,這引用才會(huì)指向內(nèi)存有效的對(duì)象。.Console.ReadKey(true);類構(gòu)造函數(shù)作用:給對(duì)象的字段(狀態(tài))賦值,它允許在創(chuàng)建對(duì)象時(shí)創(chuàng)建其狀態(tài)。構(gòu)造函數(shù)是類特殊的方法,在使用new關(guān)鍵字創(chuàng)建對(duì)象時(shí)被間接調(diào)用。注意:構(gòu)造函數(shù)沒有返回值(即使是void),它的名字總是和類的名字一樣。默認(rèn)構(gòu)造函數(shù)C#提供一個(gè)默認(rèn)的構(gòu)造函數(shù),需要時(shí)你可以重新定義,默認(rèn)構(gòu)造函數(shù)不接受任何參數(shù)。它把新的對(duì)象分配到內(nèi)存和確保所有的字段都被設(shè)置為正確的默認(rèn)值。當(dāng)你對(duì)這些默認(rèn)值不滿意,你可以重新定義默認(rèn)構(gòu)造函數(shù)。如:publicCar()(this._name=〃MyCar";this._speed=100;}那么每次使用newCar()都會(huì)創(chuàng)建狀態(tài)_name="MyCar"_speed=100的Car對(duì)象。自定義構(gòu)造函數(shù)作用:在創(chuàng)建對(duì)象時(shí)可以直接初始化對(duì)象的狀態(tài)。(this._name=name;this._speed二speed;}注意:一旦定義了自定義函數(shù),自帶的默認(rèn)構(gòu)造函數(shù)就自動(dòng)從類移除(不能用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對(duì)象了)。如果希望使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建類對(duì)象,就必須顯式定義默認(rèn)構(gòu)造函數(shù)。this關(guān)鍵字的作用一、提供對(duì)當(dāng)前實(shí)例的訪問??梢越鉀Q傳入?yún)?shù)的名字與類型字段名字相同時(shí)產(chǎn)生的作用域歧義。例如:classCar(privatestringname;publicvoidSetName(stringname)(二name;}}表示把參數(shù)name的值賦給本對(duì)象(實(shí)例)的字段name,this表示本實(shí)例。二、參數(shù)傳遞。使用this進(jìn)行串聯(lián)構(gòu)造函數(shù)調(diào)用使用一項(xiàng)名為構(gòu)造函數(shù)鏈的技術(shù)來設(shè)計(jì)類。當(dāng)類定義個(gè)了多個(gè)構(gòu)造函數(shù)時(shí),這個(gè)設(shè)計(jì)模式就會(huì)很有用。由于構(gòu)造函數(shù)通常會(huì)檢驗(yàn)傳入的參數(shù)來強(qiáng)制各種業(yè)務(wù)規(guī)則,所以在類的構(gòu)造函數(shù)集合中經(jīng)常會(huì)找到冗余的驗(yàn)證邏輯。classCar(publicintSpeed(get;set;}publicstringName(get;set;}publicCar()(}publicCar(intspeed){if(speed>150){speed=150;}this.Speed二speed;}publicCar(stringname){this.Name二name;}publicCar(intspeed,stringname)(if(speed>150)(speed=150;}this.Speed=speed;this.Name=name;}}串聯(lián)構(gòu)造函數(shù)方案:讓一個(gè)接受最多參數(shù)個(gè)數(shù)的構(gòu)造函數(shù)做“主構(gòu)造函數(shù)”,并實(shí)現(xiàn)必須的驗(yàn)證邏輯。其余的構(gòu)造函數(shù)使用this關(guān)鍵字把參數(shù)轉(zhuǎn)給主構(gòu)造函數(shù),并提供其他必需的參數(shù)。這樣,我們只關(guān)心主構(gòu)造函數(shù)的邏輯,而其他構(gòu)造函數(shù)體基本是空的了。classCar(publicintSpeed(get;set;}publicstringName(get;set;}publicCar()(}publicCar(intspeed):this(speed,〃〃){}publicCar(stringname):this(0,name){}//主構(gòu)造函數(shù)publicCar(intspeed,stringname)(if(speed>150){speed=150;}this.Speed二speed;this.Name二name;}}使用this關(guān)鍵字串聯(lián)構(gòu)造函數(shù)方式可以簡(jiǎn)化編程任務(wù),類定義更加容易維護(hù)、更更加簡(jiǎn)明。但它不是強(qiáng)制使用的。串聯(lián)構(gòu)造函數(shù)的執(zhí)行順序:1、調(diào)用構(gòu)造函數(shù)把調(diào)用者提供的參數(shù)值轉(zhuǎn)發(fā)給主構(gòu)造函數(shù),并提供其他必須的初始化參數(shù)值。2、執(zhí)行主構(gòu)造函數(shù)。3、執(zhí)行調(diào)用構(gòu)造函數(shù)體的邏輯。三、自定義索引器classCarCollection:IEnumerable(privateArrayListarCar二newArrayList();publicCarthis[intindex](get(return(Car)arCar[index];}set{arCar.Insert(index,value);}}//...}static關(guān)鍵字C#類(或者結(jié)構(gòu))可以使用static關(guān)鍵字來定義許多靜態(tài)成員。這些靜態(tài)成員只能從類級(jí)別而不能從對(duì)象級(jí)別上調(diào)用(調(diào)用靜態(tài)成員時(shí)不需要?jiǎng)?chuàng)建實(shí)例對(duì)象)。例如://錯(cuò)誤,WriteLine是靜態(tài)成員,是類級(jí)別的方法。Consolec=newConsole();c.WriteLine("BruceWong");//正確!WriteLine是類級(jí)別的方法Console.WriteLine("BruceWong");注意:一、靜態(tài)成員只能操作靜態(tài)數(shù)據(jù)或調(diào)用類的靜態(tài)成員。而非靜態(tài)成員可以操作實(shí)例數(shù)據(jù)與靜態(tài)數(shù)據(jù)(成員),因?yàn)殪o態(tài)成員對(duì)類的所有實(shí)例都是可用的。二、CLR把靜態(tài)數(shù)據(jù)分配到內(nèi)存只進(jìn)行一次,改變靜態(tài)數(shù)據(jù)將影響此類的所有實(shí)例。定義靜態(tài)構(gòu)造函數(shù)構(gòu)造函數(shù)用于在創(chuàng)建類對(duì)象時(shí)設(shè)置類對(duì)象的數(shù)據(jù)值。如果使用實(shí)例級(jí)別的構(gòu)造函數(shù)給靜態(tài)數(shù)據(jù)賦值,你會(huì)驚奇的發(fā)現(xiàn)每次新建類對(duì)象時(shí)靜態(tài)數(shù)據(jù)的只都會(huì)被重置。所以我們要初始化靜態(tài)數(shù)據(jù)最好使用靜態(tài)構(gòu)造函數(shù)。靜態(tài)構(gòu)造函數(shù)是特殊的構(gòu)造函數(shù),它非常適用于初始化在編譯時(shí)未知的靜態(tài)數(shù)據(jù)的值:一、一個(gè)類(結(jié)構(gòu))只能定義一個(gè)靜態(tài)構(gòu)造函數(shù)。二、靜態(tài)構(gòu)造函數(shù)不允許訪問修飾符并且不能接受任何參數(shù)。三、無論創(chuàng)建多少個(gè)類實(shí)例,靜態(tài)函數(shù)知執(zhí)行一次。四、CLR創(chuàng)建類實(shí)例或首次調(diào)用類靜態(tài)成員前,CLR會(huì)調(diào)用靜態(tài)構(gòu)造函數(shù)。五、靜態(tài)構(gòu)造函數(shù)先于實(shí)例級(jí)別的其他構(gòu)造函數(shù)執(zhí)行。靜態(tài)類:一個(gè)類被定義為靜態(tài)的(使用s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 政治一模題目及答案
- 政府會(huì)計(jì)題目及答案大全
- 整式次數(shù)系數(shù)題目及答案
- 2025年中國綠色邊綸布行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國滌綸篷布行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國智神健腦精膠丸行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國多功能小刀行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國可剎萬向輪行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國化鐵爐離心鼓風(fēng)機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 集中供熱二期工程(調(diào)峰燃?xì)忮仩t房)
- 2025年育嬰師職業(yè)資格考試試題及答案
- 2023年三種人試題附答案
- 北京市八十中學(xué)2025屆八年級(jí)英語第二學(xué)期期中經(jīng)典試題含答案
- 2024年 金澤鎮(zhèn)專職村務(wù)工作者招錄考試真題試題含答案
- 哇哈哈品牌管理制度
- 2025年內(nèi)蒙古自治區(qū)包頭市東河區(qū)第二中學(xué)英語八年級(jí)第二學(xué)期期末復(fù)習(xí)檢測(cè)模擬試題含答案
- 2025年四川省達(dá)州市中考英語真題(原卷版)
- 2025-2026年中國臺(tái)球產(chǎn)業(yè)消費(fèi)趨勢(shì)報(bào)告
- 2024年證券市場(chǎng)基本法律法規(guī)真題及答案
- 湖南省2025年高考公安院校公安專業(yè)考生檔案審核表
- 2025年第十屆“學(xué)憲法、講憲法”網(wǎng)絡(luò)知識(shí)競(jìng)賽題庫(含答案)
評(píng)論
0/150
提交評(píng)論