




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
在
C#
中實現(xiàn)
OOP
概念第四章回顧
第三章C#基礎C#變量的聲明方式如下:
AccessModifierDataTypeVariableName;在C#中,數(shù)據類型分為兩種基本類型,即值類型和引用類型。裝箱是指從值類型到引用類型的轉換,而取消裝箱是指從引用類型到值類型的轉換。C#的結構內部可以定義方法,也可以擁有構造函數(shù)。目標在C#中使用構造函數(shù)在C#中使用析構函數(shù)解釋垃圾回收器的工作原理討論方法重載討論操作符重載在C#中使用繼承討論C#中的重寫C#中的構造函數(shù)3-1是類中的特殊類型的方法是每次創(chuàng)建對象時要調用的函數(shù)通常用于初始化與類同名不返回值構造函數(shù)3-2usingSystem;publicclassDaysInYear{privateintdays;publicDaysInYear(){days=365;}staticvoidMain(String[]args){DaysInYearnewDaysInYear=newDaysInYear();Console.WriteLine(newDaysInYear.days); }}無構造函數(shù)輸出的結果是0有構造函數(shù)輸出結果是365帶參數(shù)的構造函數(shù)3-3…publicclassDaysInYear{privateintdays;publicDaysInYear(){days=365; }publicDaysInYear(intday){days=day;}publicDaysInYear(StringdayOne){ days=Convert.ToInt32(dayOne);}publicvoidsetDay(intnewDays){ days=newDays;}…}傳遞不同個數(shù)的參數(shù)傳遞個數(shù)相同但類型不同的參數(shù)C#中的析構函數(shù)由C#中的垃圾回收器調用垃圾回收器通過銷毀不再需要或不再被引用的對象來釋放內存語法
…~DaysInYear(){ //析構函數(shù)實現(xiàn)}…垃圾回收器3-1垃圾回收器的工作原理如果為定義析構函數(shù)的對象分配了內存,運行庫將把該對象添加到需要銷毀的對象的列表中。垃圾回收器定期檢查有沒有不再被引用的對象如果找到了其名稱沒有列在銷毀器列表中的對象,就立即清除該對象。完成垃圾回收后,將調用銷毀器線程,該線程調用有標記為“準備銷毀”的對象的銷毀方法
(析構函數(shù))。垃圾回收器3-2對象銷毀過程發(fā)生后,就將該對象從需要銷毀的對象列表中刪除。因為該對象沒有被引用,也沒有列在銷毀器列表中,所以下次進行垃圾回收時就會將它清除。垃圾回收器3-3有析構函數(shù)的對象占用的資源較多,因為即使不再需要它們,它們仍會在內存中駐留較長時間。銷毀過程作為獨立的線程執(zhí)行,該線程
會占用大量資源。方法重載重載方法有兩種方式指定不同個數(shù)的參數(shù)指定不同類型的參數(shù)不同參數(shù)個數(shù)的方法重載usingSystem;publicclassArea{privateintareaVal;publicvoidAreaCal(intradius){areaVal=(22/7)*radius*radius;}publicvoidAreaCal(intlength,intbreadth){areaVal=length*breadth;}publicvoidAreaCal(intlength,intbreadth,intheight){areaVal=length*breadth*height;}…}參數(shù)的類型相同參數(shù)個數(shù)不同不同參數(shù)類型的方法重載...publicvoidAreaCal(intradius){areaVal=(22/7)*radius*radius;}publicvoidAreaCal(stringshapeName){Console.WriteLine("{0}的面積沒有計算",shapeName);}...方法中參數(shù)個數(shù)相等,參數(shù)類型不同操作符重載3-1重載操作符意味著使該操作符具有不同的行為使用操作符可以使方程式簡單易懂…//第1行intresult=Decimal.Add(54,200);//第2行intresult2=54+200;…上述兩行執(zhí)行同樣的操作,但操作符更簡便易懂操作符重載3-2以下是可以重載的操作符列表操作符重載3-3usingSystem;publicstructDistance{publicDistance(intlon,intmag){ this.longitude=lon; this.latitude=mag;}intlongitude,latitude;publicstaticDistanceoperator-(Distancefirst,Distancesecond){ returnnewDistance(first.longitude-second.longitude,first.latitude-second.latitude);}//主函數(shù)}publicstaticvoidMain(){ Distancestart=newDistance(); DistancenewDistance=newDistance(); Distancefinish=newDistance(); start.longitude=12; start.latitude=10; finish.longitude=2; finish.latitude=1; newDistance=start-finish; Console.WriteLine("終點的位置在起點以東{0}度,以北{1}度。",newDistance.longitude,newDistance.latitude);}C#中的繼承2-1將新類作為另一個類的后代來聲明和使用避免重復編寫代碼提供代碼重用的巨大好處C#中的繼承2-2有兩種繼承類型單一繼承多重繼承
C#只支持單一繼承,不支持多重繼承單一繼承usingSystem;classCharacterVal{publicintsetCharVal(charch){charcharVal=ch;Console.WriteLine("輸入的字符是:{0}",charVal);return(0);}}classStringVal:CharacterVal{publicstringstrVal;
publicintsetStrVal(stringstr){strVal=str;Console.WriteLine("輸入的字符串是:{0}",strVal);return(0);}}classInheritance{staticvoidMain(){StringValobject1=newStringVal();Object1.setCharVal('j');Object1.setStrVal("enjoy");}}類StringVal繼承CharacterVal因此可以直接引用方法setCharVal密封類如果不需要類被繼承則應當密封該類…sealedclassclassOne
{//類的實現(xiàn)}…通過指定sealed關鍵字,可以密封任何類方法重寫2-1重寫基類中現(xiàn)有方法的步驟:-在繼承類中聲明同名的新方法
-在該方法名前附加new關鍵字
方法重寫2-2usingSystem;classIntAddition{publicvoidadd(){intfirstNum=1;intsecondNum=2;Console.WriteLine("兩數(shù)之和是:{0}",firstNum+secondNum);}}classStringAddition:IntAddition{newpublicvoidadd(){stringfirstStr="a";stringsecondStr="b";Console.WriteLine("兩字符串之和是:{0}",firstStr+secondStr);}}classMethodOverride{publicstaticvoidMain(){StringAdditionobjStringAddition=newStringAddition();objStringAddition.add();}}在StringAddition類中基類中add方法被重載總結2-1帶參數(shù)的構造函數(shù)是接受參數(shù)的構造函數(shù)在
C#中,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)工業(yè)廠房買賣合同范本
- 合同范本彩鋼棚
- 公家車庫出租合同范本
- 發(fā)廊股東協(xié)議合同范本
- 北京中開合同范本
- 合建房合同范本
- 勞動合同范本企業(yè)
- 從化醫(yī)院食堂承包合同范本
- 項目合作定金合同范本
- 合同范本范本
- 胸腹聯(lián)合傷完整版本
- 裝修店長述職報告
- 整體解決方案研究:智慧物聯(lián)網在化肥行業(yè)的應用
- 了解滑雪:滑雪器材與滑雪的技巧
- 班組長薪酬體系設計方案
- 關于社會保險經辦機構內部控制講解
- 【某醫(yī)療美容機構營銷策略現(xiàn)狀、問題及優(yōu)化建議分析6300字】
- 零星材料采購申請表
- 生理心理學教案
- 善借者贏天下(2017甘肅慶陽中考議論文閱讀試題含答案)
- 新聞采訪與寫作課件第十章采訪的實施現(xiàn)場觀察
評論
0/150
提交評論