C#多態(tài)實例詳解_第1頁
C#多態(tài)實例詳解_第2頁
C#多態(tài)實例詳解_第3頁
C#多態(tài)實例詳解_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)

----C#多態(tài)實例詳解----多態(tài)是面向?qū)ο缶幊讨腥髾C(jī)制之一,其原理建立在"從父類繼承而來的子類可以轉(zhuǎn)換為其父類"這個規(guī)則之上,換句話說,能用父類的地方,就能用該類的子類.當(dāng)從父類派生了很多子類時,由于每個子類都有其不同的代碼實現(xiàn),所以當(dāng)用父類來引用這些子類時,同樣的操作而可以表現(xiàn)出不同的操作結(jié)果,這就是所謂的多態(tài).1.了解什么是多態(tài)性2.如何定義一個虛方法3.如何重載一個虛方法4.如何在程序中運用多態(tài)性面向?qū)ο蟪绦蛟O(shè)計中的另外一個重要概念是多態(tài)性。在運行時,可以通過指向基類的指針,來調(diào)用實現(xiàn)派生類中的方法??梢园岩唤M對象放到一個數(shù)組中,然后調(diào)用它們的方法,在這種場合下,多態(tài)性作用就體現(xiàn)出來了,這些對象不必是相同類型的對象。當(dāng)然,如果它們都繼承自某個類,你可以把這些派生類,都放到一個數(shù)組中。如果這些對象都有同名方法,就可以調(diào)用每個對象的同名方法。本節(jié)課將向你介紹如何完成這些事情。1.清單9-1.帶有虛方法的基類:DrawingObject.csusingSystem;

publicclassDrawingObject

{

publicvirtualvoidDraw()

{

Console.WriteLine("I'mjustagenericdrawingobject.");

}

}說明清單9-1定義了DrawingObject類。這是個可以讓其他對象繼承的基類。該類有一個名為Draw()的方法。Draw()方法帶有一個virtual修飾符,該修飾符表明:該基類的派生類可以重載該方法。DrawingObject類的Draw()方法完成如下事情:輸出語句"I'mjustagenericdrawingobject."到控制臺。2.清單9-2.帶有重載方法的派生類:Line.cs,Circle.cs,andSquare.csusingSystem;

publicclassLine:DrawingObject

{

publicoverridevoidDraw()

{

Console.WriteLine("I'maLine.");

}

}publicclassCircle:DrawingObject

{

publicoverridevoidDraw()

{

Console.WriteLine("I'maCircle.");

}

}publicclassSquare:DrawingObject

{

publicoverridevoidDraw()

{

Console.WriteLine("I'maSquare.");

}

}說明清單9-2定義了三個類。這三個類都派生自DrawingObject類。每個類都有一個同名Draw()方法,這些Draw()方法中的每一個都有一個重載修飾符。重載修飾符可讓該方法在運行時重載其基類的虛方法,實現(xiàn)這個功能的條件是:通過基類類型的指針變量來引用該類。3.清單9-3.實現(xiàn)多態(tài)性的程序:DrawDemo.csusingSystem;

publicclassDrawDemo

{

publicstaticintMain(string[]args)

{

DrawingObject[]dObj=newDrawingObject[4];

dObj[0]=newLine();

dObj[1]=newCircle();

dObj[2]=newSquare();

dObj[3]=newDrawingObject();

foreach(DrawingObjectdrawObjindObj)

{

drawObj.Draw();

}

return0;

}

}說明清單9-3演示了多態(tài)性的實現(xiàn),該程序使用了在清單9-1和清單9-2中定義的類。在DrawDemo類中的Main()方法中,創(chuàng)建了一個數(shù)組,數(shù)組元素是DrawingObject類的對象。該數(shù)組名為dObj,是由四個DrawingObject類型的對象組成。接下來,初始化dObj數(shù)組,由于Line,Circle和Square類都是DrawingObject類的派生類,所以這些類可以作為dObj數(shù)組元素的類型。如果C#沒有這種功能,你得為每個類創(chuàng)建一個數(shù)組。繼承的性質(zhì)可以讓派生對象當(dāng)作基類成員一樣用,這樣就節(jié)省了編程工作量。一旦數(shù)組初始化之后,接著是執(zhí)行foreach循環(huán),尋找數(shù)組中的每個元素。在每次循環(huán)中,dObj數(shù)組的每個元素(對象)調(diào)用其Draw()方法。多態(tài)性體現(xiàn)在:在運行時,各自調(diào)用每個對象的Draw()方法。盡管dObj數(shù)組中的引用對象類型是DrawingObject,這并不影響派生類重載DrawingObject類的虛方法Draw()。在dObj數(shù)組中,通過指向DrawingObject基類的指針來調(diào)用派生類中的重載的Draw()方法。輸出結(jié)果是:I'maLine.

I'maCircle.

I'maSquare.

I'mjustagenericdrawingobject.在DrawDemo程序中,調(diào)用了每個派生類的重載的Draw()方法。最后一行中,執(zhí)行的是D

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論