下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南疆村雙語培訓(xùn)制度
- 工廠封閉培訓(xùn)管理制度
- 干部培訓(xùn)跟蹤管理制度
- 培訓(xùn)責(zé)任人管理制度及流程
- 美宜佳供應(yīng)商培訓(xùn)制度
- 全員培訓(xùn)mah制度
- 空姐培訓(xùn)機(jī)構(gòu)管理制度
- 崗位培訓(xùn)認(rèn)證管理制度
- 培訓(xùn)機(jī)構(gòu)年費管理制度
- 培訓(xùn)機(jī)構(gòu)收付款制度
- 新疆三校生考試題及答案
- 2026年《必背60題》腫瘤內(nèi)科醫(yī)師高頻面試題包含答案
- 2025新疆亞新煤層氣投資開發(fā)(集團(tuán))有限責(zé)任公司第三批選聘/招聘筆試歷年參考題庫附帶答案詳解
- 圍手術(shù)期心肌梗塞的護(hù)理
- 超市門口鑰匙管理制度
- 代貼現(xiàn)服務(wù)合同范本
- 2025小學(xué)六年級英語時態(tài)綜合練習(xí)卷
- 垃圾清運補(bǔ)充合同范本
- 病蟲害防治操作規(guī)程編制
- 九年級上學(xué)期數(shù)學(xué)壓軸必考題型-反比例函數(shù)(含答案)
- 上海市旅館從業(yè)人員考試及答案解析
評論
0/150
提交評論