面向?qū)ο蟮木幊碳夹g(shù) 對(duì)象和屬性等.ppt_第1頁
面向?qū)ο蟮木幊碳夹g(shù) 對(duì)象和屬性等.ppt_第2頁
面向?qū)ο蟮木幊碳夹g(shù) 對(duì)象和屬性等.ppt_第3頁
面向?qū)ο蟮木幊碳夹g(shù) 對(duì)象和屬性等.ppt_第4頁
面向?qū)ο蟮木幊碳夹g(shù) 對(duì)象和屬性等.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C 程序設(shè)計(jì)語言課程內(nèi)容 第一章 概述第二章 C 語言的基本原理第三章 C 中對(duì)象的創(chuàng)建第四章 面向?qū)ο蟮木幊碳夹g(shù)第五章 C 編程第六章 編寫基于 NET的應(yīng)用程序第七章 使用ADO NET訪問數(shù)據(jù) 第八章 創(chuàng)建基于Windows的應(yīng)用程序第九章 在C 應(yīng)用程序中使用XMLWebService第十章 創(chuàng)建Web應(yīng)用程序十一章 應(yīng)用程序設(shè)置和部署十二章 進(jìn)階學(xué)習(xí)目標(biāo) 面向?qū)ο蟮木幊碳夹g(shù) 內(nèi)容 設(shè)計(jì)對(duì)象繼承性多態(tài)性 C 設(shè)計(jì)對(duì)象4 1 學(xué)習(xí)完本節(jié)后 你將能夠 在對(duì)象中封裝信息使用屬性管理對(duì)封裝數(shù)據(jù)的訪問 封裝性4 1 2 將類的某些數(shù)據(jù)和操作這些數(shù)據(jù)的代碼隱藏起來 這就是封裝封裝的好處 可以隱藏類實(shí)現(xiàn)的細(xì)節(jié)簡(jiǎn)化用戶的使用易于軟件的更新 修訂 維護(hù) 可以修改內(nèi)部實(shí)現(xiàn) 但不影響用戶的使用 訪問修飾符 使用訪問修飾符 可以定義應(yīng)用程序中類成員的作用域 可見性 屬性4 1 3 屬性是 聰明 的字段 特殊 的方法定義屬性類似于定義一個(gè)方法 但使用屬性時(shí)如同使用一個(gè)字段 classCat publicstringname publicintage staticvoidMain Catcat1 newCat cat1 age 13 錯(cuò)誤 創(chuàng)建屬性4 1 3 語法 public protected數(shù)據(jù)類型屬性名 get get訪問器 獲取屬性的代碼 set set訪問器 設(shè)置屬性的代碼 創(chuàng)建屬性4 1 3 示例 publicclassCat privateintage publicintAge get returnage set if value 20 報(bào)告出錯(cuò)elseage value 使用屬性4 1 3 示例 Catcat1 newCat cat1 Age 1 使用Age屬性的set訪問器intn Cat Age 使用Age屬性的get訪問器cat1 Age 100 收到錯(cuò)誤消息 屬性4 1 3 如果只提供了get 沒有set 這樣的屬性為只讀屬性如果只提供了set 沒有g(shù)et 只寫屬性優(yōu)點(diǎn) 屬性在使用時(shí)類似于類的字段 簡(jiǎn)單屬性在實(shí)現(xiàn)時(shí)類似于方法 可以編寫代碼控制用戶對(duì)數(shù)據(jù)的存 取 增加安全性檢查可以設(shè)置只讀或只寫屬性 練習(xí) 參見教材P101頁4 1 4課堂練習(xí) 10分鐘 編寫和使用屬性4 1 4 面向?qū)ο蟮木幊碳夹g(shù) 內(nèi)容 設(shè)計(jì)對(duì)象繼承性多態(tài)性 C 繼承性4 2 定義基類創(chuàng)建派生類創(chuàng)建密封類 繼承4 2 1 A isakindof B 貓是一只動(dòng)物 阿土仔是一個(gè)人 A isakindof B 說明B是A的一個(gè)父類 A是B的子類 基類 派生類 子類無條件的接收父類具有的特性 包括屬性和方法 這就叫做繼承繼承允許把公共的屬性和方法包含在基類中得到重用 此外 子類還可以添加自己的特性利用繼承 可以以現(xiàn)有的類為基礎(chǔ) 創(chuàng)建出新的類 實(shí)現(xiàn)了代碼的重用 繼承4 2 1 繼承描述了 是什么種類 isakindof 的關(guān)系派生類從基類繼承屬性和方法 實(shí)現(xiàn)了代碼重用派生類變得更專門化在C 中只支持單一繼承 即每個(gè)子類只能有一個(gè)父類 父類 子類 動(dòng)物 派生類4 2 2 示例 動(dòng)物園需要管理3種動(dòng)物 羚羊 獅子 大象 publicclassAntelope publicboolIsSleeping publicvoidSleep publicvoidEat publicclassLion publicboolIsSleeping publicvoidSleep publicvoidEat publicvoidStalkPrey publicclassElephant publicboolIsSleeping publicvoidSleep publicvoidEat publicintCarrayCapacity publicclassAnimal publicboolIsSleeping publicvoidSleep publicvoidEat publicclassAntelope Animal publicclassLion Animal publicvoidStalkPrey publicclassElephant Animal publicintCarrayCapacity 派生類4 2 2 示例 publicclassAnimal protectedboolIsSleeping publicvoidSleep publicvoidEat publicclassLion Animal publicvoidStalkPrey LionadoptedLion newLion adoptedLion StalkPrey adoptedLion Eat base關(guān)鍵字4 2 3 base指代一個(gè)對(duì)象的父類 基類當(dāng)子類中的成員與父類成員重名是 父類的成員被隱藏base的作用 點(diǎn)取父類中被子類隱藏了的成員變量點(diǎn)取被子類覆蓋了的方法作為方法名表示父類的構(gòu)造函數(shù) publicAnimal publicvoidmethod1 publicclassLion Animal 將父類的同名方法隱藏publicvoidmethod1 publicLion this method1 base method1 密封類4 2 4 使用sealed關(guān)鍵字聲明密封類密封類不允許其他類繼承該類密封的方法不允許被覆蓋如果你的類不希望被別人繼承 修改 為安全起見 把它們定義為sealed吧 publicsealedclassMyClass classmembers 練習(xí) 參見教材P108頁4 2 5課堂練習(xí) 10分鐘 創(chuàng)建派生類4 2 5 面向?qū)ο蟮木幊碳夹g(shù) 內(nèi)容 設(shè)計(jì)對(duì)象繼承性多態(tài)性 C 多態(tài)4 3 通過在基類中使用虛方法來實(shí)現(xiàn)多態(tài)性創(chuàng)建和使用抽象類 多態(tài)性4 3 1 具有多種不同的形態(tài) 這種能力稱為多態(tài)性子類繼承了父類的特性 但子類在某些細(xì)節(jié)上各不相同 多種多樣 如何做到這一點(diǎn)呢 Animal對(duì)象 Elephant Cat Mouse 行為 EatGrass EatMouse EatCheese 被調(diào)用的方法 Eat Eat Eat 編寫虛方法4 3 2 如果希望某個(gè)方法的實(shí)現(xiàn)能夠在子類中進(jìn)一步得到改進(jìn) 那么將方法定義為虛方法使用virtual關(guān)鍵字定義虛方法這樣子類就可以改進(jìn)從父類繼承下來的Eat方法了 publicclassAnimal publicvirtualvoidEat Console WriteLine Eatsomething 編寫虛方法4 3 2 如果希望改進(jìn)父類的某個(gè)虛方法 使用override關(guān)鍵字覆蓋父類的方法 提供自己的實(shí)現(xiàn)就可以了當(dāng)覆蓋虛方法時(shí) 覆蓋的方法必須與被覆蓋的方法具有相同的方法簽名這樣子類就可以有與眾不同的Eat方法了 publicclassCat Animal publicoverridevoidEat Console WriteLine Eatmouse 虛方法的調(diào)用4 3 2 當(dāng)調(diào)用某個(gè)虛方法時(shí) 運(yùn)行時(shí)會(huì)根據(jù)具體對(duì)象的類型 動(dòng)態(tài)決定調(diào)用哪個(gè)方法 publicclassAnimal publicvirtualvoidEat Console WriteLine Eatsomething publicclassCat Animal publicoverridevoidEat Console WriteLine Eatmouse AnimalmyCat newCat myCat Eat 輸出 Eatmouse 多態(tài)的實(shí)現(xiàn)4 3 2 動(dòng)物飼養(yǎng)員publicclassAnimalTrainer publicvoidFeedAnimal Animala a Eat staticvoidMain ElephantmyElephant newElephant CatmyCat newCat MousemyMouse newMouse AnimalTrainermarry newAnimalTrainer marry FeedAnimal myElephant EatGrassmarry FeedAnimal myCat EatMousemarry FeedAnimal myMouse EatCheese 抽象方法只有方法聲明 但沒有方法實(shí)現(xiàn) 是一個(gè)空方法抽象的方法隱式為虛方法 必須被覆蓋抽象類 包含了抽象方法的類必須聲明為抽象類只能被繼承 但不能創(chuàng)建一個(gè)抽象類的對(duì)象實(shí)例使用abstract關(guān)鍵字定義抽象類和抽象方法如果你的某個(gè)類的方法不知道該如何實(shí)現(xiàn) 實(shí)現(xiàn)的細(xì)節(jié)是由子類決定的 那么把它定義成abstract吧 抽象方法和抽象類4 3 3 classShape publicstringname publicdoubleGetArea 抽象方法和抽象類4 3 3 思考題 為什么使用抽象方法定義一個(gè)shape類 表示各種幾何圖形 方法getArea 用來計(jì)算圖形的面積 該如何實(shí)現(xiàn)這個(gè)方法呢 三角形 正方形 圓形 不同的幾何圖形面積的計(jì)算公式不同 顯然在這里沒法實(shí)現(xiàn) class圓形 Shape publicoverridedoubleGetArea area R2 class三角形 Shape publicoverridedoubleGetArea area 底 高 2 abstractclassShape publicabstractdoubleGetArea 沒有方法體 抽象方法和抽象類4 3 3 解決辦法 定義為abstract 讓各個(gè)子類自己去實(shí)現(xiàn)吧 練習(xí) 參見教材P115頁4 3 4課堂練習(xí) 10分鐘 使用多態(tài)性4 3 4 面向?qū)ο缶幊虄?yōu)點(diǎn)4 1 1 簡(jiǎn)易性對(duì)象反映了現(xiàn)實(shí)世界的元素 使程序更容易設(shè)計(jì)封裝性隱藏了重要的數(shù)據(jù)和實(shí)現(xiàn)細(xì)節(jié) 易于代碼維護(hù) 更安全繼承性實(shí)現(xiàn)了

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論