版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C#
中高級OOP概念第五章C#中的高級OOP概念第1頁回顧第四章-實現(xiàn)C#中高級OOP概念帶參數(shù)結(jié)構(gòu)函數(shù)是指接收參數(shù)結(jié)構(gòu)函數(shù)。在
C#中,析構(gòu)函數(shù)由垃圾回收器調(diào)用。在C#中允許方法重載在C#中允許操作符重載C#不支持多重繼續(xù)要重寫基類現(xiàn)有方法,需要在繼承類中申明一個同名新方法,并在方法名稱前附加new關(guān)鍵字
2C#中的高級OOP概念第2頁目標(biāo)討論多態(tài)性使用虛函數(shù)討論抽象基類討論接口概念使用接口3C#中的高級OOP概念第3頁C#中多態(tài)性6-1多態(tài)性和虛函數(shù)關(guān)系非常親密多態(tài)性允許在運行時實現(xiàn)派生類方法需要從基類對象調(diào)用派生類方法時,能夠使用虛函數(shù)publicclassShapeObj
{
publicvirtualvoidarea()
{
System.Console.WriteLine("這是一個虛Area方法");
}
}4C#中的高級OOP概念第4頁C#中多態(tài)性6-25C#中的高級OOP概念第5頁C#中多態(tài)性6-3publicclassCircle:ShapeObj
{publicoverridevoidarea()
{
System.Console.WriteLine("這是CircleArea()方法");
}
}
publicclassRectangle:ShapeObj
{
publicoverridevoidarea()
{
System.Console.WriteLine("這是RectangleArea()方法");
}
}publicclassSquare:ShapeObj
{
publicoverridevoidarea()
{
System.Console.WriteLine("這是SquareArea()方法");
}
}定義了三個類(Rectangle、Circle和Square)。這些類是從ShapeObj類派生,而且重寫了ShapeObj類area()方法。override關(guān)鍵字用于重寫基類函數(shù)area()。6C#中的高級OOP概念第6頁C#中多態(tài)性6-4publicclassPolymorphismExp
{
publicstaticvoidmain()
{
ShapeObj[]objArray=newShapeObj[4];
objArray[0]=newShapeObj();
objArray[1]=newRectangle(); objArray[2]=newCircle(); objArray[3]=newSquare();
foreach(ShapeObjiterateArrayinobjArray)
{
iterateArray.area();
}
}
}每個派生自ShapeObj類area()方法都被調(diào)用
7C#中的高級OOP概念第7頁C#中多態(tài)性6-5classSecondExp{publicintfirstMethod(){return(secondMethod()*thirdMethod());}publicvirtualintsecondMethod(){ return(10);}publicintthirdMethod(){ return(20);}}classDerivedClass:SecondExp{publicoverrideintsecondMethod(){ return(30);}}classTest{Publicstaticvoidmain(){ DerivedClassobjDerived=newDerivedClass(); System.Console.WriteLine(objDerived.firstMethod());}}在DerivedClass中重寫基類中虛函數(shù)secondMethod()8C#中的高級OOP概念第8頁C#中多態(tài)性6-6多態(tài)性是智能重寫多態(tài)性-在運行時決定調(diào)用哪個方法多態(tài)性需要虛函數(shù),而虛函數(shù)則需要進(jìn)行方法重寫9C#中的高級OOP概念第9頁抽象基類2-1抽象基類是能夠被繼承類不能創(chuàng)建抽象類對象C#允許在類定義中添加abstract修飾符來創(chuàng)建抽象基類。10C#中的高級OOP概念第10頁抽象基類2-2usingSystem;abstractclassBaseClass{publicabstractvoidabstractFunc();publicvoidnonAbstractFunc(){Console.WriteLine("這是nonAbractFunc()方法!");}}classDerivedClass:BaseClass{publicoverridevoidabstractFunc(){Console.WriteLine("這是abstractFunc()方法!");}}classTest{staticvoidmain(){DerivedClassobjDerived=newDerivedClass();BaseClassobjBase=objDerived;objBase.abstractFunc();objDerived.nonAbstractFunc();}}在派生類DerivedClass中重寫抽象基類抽象方法abstractFunc()11C#中的高級OOP概念第11頁接口4-1接口是純抽象基類它只能包含抽象方法,而不能包含任何方法實現(xiàn)實現(xiàn)特定接口類必須實現(xiàn)該接口列出組員publicinterfaceIFile{intdelFile();voiddisFile();}12C#中的高級OOP概念第12頁接口4-2publicclassMyFile:IFile{publicintdelFile(){ System.Console.WriteLine("DelFile實現(xiàn)!"); return0;}publicvoiddisFile(){ System.Console.WriteLine("DisFile實現(xiàn)!");}}classTest{staticvoidmain(){ MyFileobjMyFile=newMyFile(); objMyFile.disFile(); intretValue=objMyFile.delFile();}}類MyFile繼承了接口IFile并實現(xiàn)了接口中定義方法delFile()和disFile()13C#中的高級OOP概念第13頁接口4-3定義一個類:publicclassBaseforInterface{publicvoidopen(){ System.Console.WriteLine("這是BaseforInterfaceopen方法");}}14C#中的高級OOP概念第14頁接口4-4publicclassMyFile:BaseforInterface,IFile{publicintdelFile(){ System.Console.WriteLine("DelFile實現(xiàn)!"); return0;}publicvoiddisFile(){ System.Console.WriteLine("DisFile實現(xiàn)!");}}classTest{staticvoidmain(){ MyFileobjMyFile=newMyFile(); objMyFile.disFile(); intretValue=objMyFile.delFile(); objMyFile.open();}}定義一個繼承類BaseforInterface和接口Ifile新類MyFile示例輸出以下列圖:15C#中的高級OOP概念第15頁多接口2-1C#允許多接口實現(xiàn)
定義一個接口,僅包含一個方法publicinterfaceIFileTwo{ voidapplySecondInterface();}16C#中的高級OOP概念第16頁多接口2-2publicclassMyFile:BaseforInterface,IFile,IFileTwo{publicintdelFile(){System.Console.WriteLine("DelFile實現(xiàn)!");return0;publicvoiddisFile(){System.Console.WriteLine("DisFile實現(xiàn)!");}publicvoidapplySecondInterface(){System.Console.WriteLine("ApplySecondInterface實現(xiàn)!");}}classTest{staticvoidmain(){MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();objMyFile.applySecondInterface();}}本示例實現(xiàn)多接口繼承,與前面代碼合并后輸出結(jié)果以下:17C#中的高級OOP概念第17頁顯式接口當(dāng)兩個接口中含有同名方法時,能夠使用顯式接口實現(xiàn)publicinterfaceIFile{intdelFile();voiddisFile();}publicinterfaceIFileTwo{voidapplySecondInterface();voiddisFile();}publicclassMyFile:BaseforInterface,IFile,IFileTwo{...voidIFile.disFile(){System.Console.WriteLine("DisFileIFile實現(xiàn)");voidIFileTwo.disFile(){System.Console.WriteLine("DisFileIFileTwo實現(xiàn)");}...}18C#中的高級OOP概念第18頁接口繼承能夠經(jīng)過將多個接口組合到一起來創(chuàng)建新接口interfaceIAllFile:IFile,IFileTwo{//假如需要,除了IFile和IFileTwo操作之外,//還能夠添加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度跨境電商平臺區(qū)域代理合同范本3篇
- 2024年生物醫(yī)藥企業(yè)股權(quán)收購合同匯編3篇
- 淘寶找建筑課程設(shè)計
- 專題03 閱讀理解之推理判斷題(練習(xí))(解析版)
- 煉鋼廠部門崗位職責(zé)說明書
- 機(jī)電工程施工組織設(shè)計
- (一)高標(biāo)準(zhǔn)農(nóng)田施工方案
- 油條配方課程設(shè)計
- 糖果罐子手工課程設(shè)計
- 算法課程設(shè)計總結(jié)
- 無菌技術(shù)操作評分標(biāo)準(zhǔn)
- 《社群運營》全套教學(xué)課件
- 兒童版畫(版畫基礎(chǔ))
- 中央2024年國家國防科工局重大專項工程中心面向應(yīng)屆生招聘筆試歷年典型考題及考點附答案解析
- 車輛提檔委托書樣本
- 充值消費返利合同范本
- 宜賓市敘州區(qū)2022-2023學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題
- 國開政治學(xué)原理2024春期末綜合練習(xí)題(附答案)
- GB/T 18488-2024電動汽車用驅(qū)動電機(jī)系統(tǒng)
- 裝配式混凝土建筑預(yù)制疊合板、疊合梁識圖
- 醫(yī)療科研數(shù)據(jù)管理制度
評論
0/150
提交評論