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

下載本文檔

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

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論