




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C#程序設(shè)計語言課程內(nèi)容,第一章:概述 第二章:C# 語言的基本原理 第三章:C# 中對象的創(chuàng)建 第四章:面向?qū)ο蟮木幊碳夹g(shù) 第五章:C# 編程 第六章:編寫基于 .NET 的應用 程序 第七章:使用 ADO.NET 訪問 數(shù)據(jù),第八章:創(chuàng)建基于 Windows 的應用程序 第九章:在 C# 應用程序中使 用 XML Web Service 第十章:創(chuàng)建 Web 應用程序 十一章:應用程序設(shè)置和 部署 十二章:進階學習目標,面向?qū)ο蟮木幊碳夹g(shù),內(nèi)容:,設(shè)計對象 繼承性 多態(tài)性,C#,設(shè)計對象 4.1,學習完本節(jié)后,你將能夠: 在對象中封裝信息 使用屬性管理對封裝數(shù)據(jù)的訪問,封 裝 性 4.1.
2、2,將類的某些數(shù)據(jù)和操作這些數(shù)據(jù)的代碼隱藏起來,這就是封裝 封裝的好處: 可以隱藏類實現(xiàn)的細節(jié) 簡化用戶的使用 易于軟件的更新、修訂、維護??梢孕薷膬?nèi)部實現(xiàn),但不影響用戶的使用,訪 問 修 飾 符,使用訪問修飾符,可以定義應用程序中類成員的作用域(可見性),屬 性 4.1.3,屬性是“聰明”的字段,“特殊”的方法 定義屬性類似于定義一個方法,但使用屬性時如同使用一個字段,class Cat public string name ; public int age; ,static void Main() Cat cat1 = new Cat(); cat1.age = -13; /錯誤 ,創(chuàng) 建
3、 屬 性 4.1.3,語法:,public|protected 數(shù)據(jù)類型 屬性名 get /get訪問器,獲取屬性的代碼 set /set訪問器,設(shè)置屬性的代碼 ,創(chuàng) 建 屬 性 4.1.3,示例:,public class Cat private int age; public int Age get return age; set if (value=20) 報告出錯 else age = value; ,使 用 屬 性 4.1.3,示例:,Cat cat1 = new Cat(); cat1.Age = 1; /使用Age屬性的set訪問器 int n = Cat.Age; /使用Age
4、屬性的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” is a kind of “B”,貓
5、是一只動物,阿土仔是一個人 “A” is a kind of “B”,說明B是A的一個父類,A是B的子類(基類/派生類) 子類無條件的接收父類具有的特性,包括屬性和方法,這就叫做繼承 繼承允許把公共的屬性和方法包含在基類中得到重用,此外,子類還可以添加自己的特性 利用繼承,可以以現(xiàn)有的類為基礎(chǔ),創(chuàng)建出新的類,實現(xiàn)了代碼的重用,繼 承 4.2.1,繼承描述了“是什么種類” ( is a kind of)的關(guān)系 派生類從基類繼承屬性和方法,實現(xiàn)了代碼重用 派生類變得更專門化 在C#中只支持單一繼承,即每個子類只能有一個父類,父類,子類,動物,派 生 類 4.2.2,示例: 動物園需要管理3種動物,
6、羚羊,獅子,大象,public class Antelope public bool IsSleeping; public void Sleep() public void Eat() public class Lion public bool IsSleeping; public void Sleep() public void Eat() public void StalkPrey() public class Elephant public bool IsSleeping; public void Sleep() public void Eat() public int CarrayCa
7、pacity; ,public class Animal public bool IsSleeping; public void Sleep() public void Eat() public class Antelope: Animal public class Lion : Animal public void StalkPrey() public class Elephant:Animal public int CarrayCapacity; ,派 生 類 4.2.2,示例:,public class Animal protected bool IsSleeping; public v
8、oid Sleep() public void Eat() public class Lion : Animal public void StalkPrey() . Lion adoptedLion = new Lion(); adoptedLion.StalkPrey(); adoptedLion.Eat();,base 關(guān)鍵字 4.2.3,base 指代一個對象的父類/基類 當子類中的成員與父類成員重名是,父類的成員被隱藏 base 的作用: 點取父類中被子類隱藏了的成員變量 點取被子類覆蓋了的方法 作為方法名表示父類的構(gòu)造函數(shù),public Animal public void meth
9、od1() public class Lion : Animal /將父類的同名方法隱藏 public void method1() public Lion() this.method1(); base.method1(); ,密 封 類 4.2.4,使用sealed關(guān)鍵字聲明密封類 密封類不允許其他類繼承該類 密封的方法不允許被覆蓋 如果你的類不希望被別人繼承、修改,為安全起見,把它們定義為sealed吧!,public sealed class MyClass / class members ,練 習,參見教材P108頁4.2.5 課堂練習,10 分鐘,創(chuàng)建派生類 4.2.5,面向?qū)ο蟮木?/p>
10、程技術(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,行為,Eat Grass,Eat Mouse,Eat Cheese,被調(diào)用的 方法,Eat (),Eat (),Eat (),編 寫 虛 方 法 4.3.2,如果希望某個方法的實現(xiàn)能夠在子類中進一步得到改進,那么將方法定義為虛方法 使用virtual關(guān)鍵字定義虛方法 這樣子類就可
11、以改進從父類繼承下來的Eat方法了,public class Animal public virtual void Eat() Console.WriteLine(Eat something); ,編 寫 虛 方 法 4.3.2,如果希望改進父類的某個虛方法,使用override關(guān)鍵字覆蓋父類的方法,提供自己的實現(xiàn)就可以了 當覆蓋虛方法時,覆蓋的方法必須與被覆蓋的方法具有相同的方法簽名 這樣子類就可以有與眾不同的Eat方法了,public class Cat : Animal public override void Eat() Console.WriteLine(Eat mouse !);
12、,虛 方 法 的調(diào) 用 4.3.2,當調(diào)用某個虛方法時,運行時會根據(jù)具體對象的類型,動態(tài)決定調(diào)用哪個方法。,public class Animal public virtual void Eat() Console.WriteLine(Eat something); public class Cat : Animal public override void Eat() Console.WriteLine(Eat mouse !); Animal myCat = new Cat(); myCat.Eat(); / 輸出:Eat mouse !,多 態(tài) 的 實 現(xiàn) 4.3.2,動物飼養(yǎng)員 pub
13、lic class AnimalTrainer public void FeedAnimal(Animal a) a.Eat(); static void Main() Elephant myElephant = new Elephant(); Cat myCat = new Cat(); Mouse myMouse = new Mouse(); AnimalTrainer marry = new AnimalTrainer(); marry.FeedAnimal(myElephant); /Eat Grass marry.FeedAnimal(myCat); /Eat Mouse marry
14、.FeedAnimal(myMouse); /Eat Cheese ,抽象方法 只有方法聲明,但沒有方法實現(xiàn),是一個空方法 抽象的方法隱式為虛方法,必須被覆蓋 抽象類: 包含了抽象方法的類必須聲明為抽象類 只能被繼承,但不能創(chuàng)建一個抽象類的對象實例 使用abstract關(guān)鍵字定義抽象類和抽象方法 如果你的某個類的方法不知道該如何實現(xiàn),實現(xiàn)的細節(jié)是由子類決定的,那么把它定義成abstract吧!,抽象方法和抽象類 4.3.3,class Shape public string name ; public double GetArea() ? ? ? ,抽象方法和抽象類 4.3.3,思考題: 為什
15、么使用抽象方法 定義一個shape類,表示各種幾何圖形,方法getArea( )用來計算圖形的面積,該如何實現(xiàn)這個方法呢?,?,三角形,正方形,圓形,不同的幾何圖形面積的計算公式不同,顯然在這里沒法實現(xiàn),class 圓形 :Shape public override double GetArea ( ) area = R2 ; ,class 三角形 :Shape public override double GetArea ( ) area = (底 * 高)/2 ; ,abstract class Shape public abstract double GetArea();/沒有方法體 ,抽象方法和抽象類 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)了代碼重用,提高了開發(fā)效率 多態(tài)性 實現(xiàn)了現(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精英團隊廠房設(shè)施養(yǎng)護與維護服務(wù)協(xié)議
- 餐廳資產(chǎn)重組與股份購買及經(jīng)營管理權(quán)交接合同
- 老兵短線技術(shù)課件
- 美術(shù)說課課件教學
- 瓷器考試題及答案
- 消防安全工作考評與獎懲制度
- 特種設(shè)備的安全操作規(guī)程
- 班組崗位安全生產(chǎn)責任制
- 火災隱患排查整治總結(jié)
- 礦山安全生產(chǎn)責任制
- 國開2024年《JavaScript程序設(shè)計》形考1-3答案
- 廣東省四校2023-2024學年高二下學期期末聯(lián)考+英語試卷(含答案)
- DB15-T 3585-2024 高標準農(nóng)田施工質(zhì)量評定規(guī)程
- 電氣設(shè)備-核電行業(yè)研究框架:成長性與穩(wěn)定性兼?zhèn)淇春煤穗娭虚L期價值
- 住房廚衛(wèi)煙氣集中排放系統(tǒng)施工與質(zhì)量驗收規(guī)程
- 企業(yè)深度工作培訓
- 杭州浙江杭州市森林和野生動物保護服務(wù)中心招聘編外聘用人員筆試歷年典型考題及考點附答案解析
- 超聲診斷設(shè)備行業(yè)營銷策略方案
- 質(zhì)量環(huán)境職業(yè)健康安全管理體系三合一整合全套體系文件(管理手冊+程序文件)
- 廣東省茂名市直屬學校2023-2024學年七年級下學期期末數(shù)學試題
- QBT 102T-2023 甜菜糖廠設(shè)計規(guī)范 (正式版)
評論
0/150
提交評論