




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C#程序設(shè)計(jì)及應(yīng)用dstang2000Copyright by ARTCOM PTs.C#程序設(shè)計(jì)第3章 面向?qū)ο蟮腃#語言第3章面向?qū)ο蟮腃#語言dstang20002C#程序設(shè)計(jì)本章內(nèi)容 類、字段、 屬性、索引 類的繼承 修飾符 接口 結(jié)構(gòu)與枚舉 面向?qū)ο螅豪^承、封裝、多態(tài) UML類圖簡(jiǎn)介3C#程序設(shè)計(jì)3.1 類字段4C#程序設(shè)計(jì)現(xiàn)實(shí)中的事物抽象為類 類(class)最基本的要素是p 字段(field):變量函數(shù)(method):p5C#程序設(shè)計(jì)定義類中的字段和public string name; public int age;public void SayHello()Console.
2、WriteLine(Hello!public string GetInfo()My name is + name );return Name: + name + , Age: + age;6C#程序設(shè)計(jì)構(gòu)造(constructor) 構(gòu)造的主要作用是完成對(duì)象的初始化工作 (1)構(gòu)造 (2)構(gòu)造public的名與類名相同。沒有返回類型,也不能寫void。( string n, int a )name = n;age = a;7C#程序設(shè)計(jì)默認(rèn)(default)構(gòu)造 如果用戶沒有定義任何構(gòu)造, 則系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè) public() 8C#程序設(shè)計(jì)對(duì)象的創(chuàng)建 構(gòu)造不能顯式地直接調(diào)用,而是用new來
3、調(diào)用。(“Liming”,p=new20);nameagep9C#程序設(shè)計(jì)對(duì)象的使用(“Liming”,p=new20); Console.WriteLine( ); p.SayHello();10C#程序設(shè)計(jì)析構(gòu)class() 由于C#自動(dòng)進(jìn)行對(duì)象的,所以用戶一般不定義析構(gòu)11C#程序設(shè)計(jì)的重載(overloading)public void SayHello()Console.WriteLine(Hello! My name is + name );public void SayHello(another )Console.WriteLine(Hello, + another
4、.name+ ! My name is + name );的簽名:名及參數(shù)個(gè)數(shù)及類型(參數(shù)名不算)OverloadingTest.cs12C#程序設(shè)計(jì)使用thisthis指這個(gè)對(duì)象本身,常用于:(1)(VS會(huì)智能提示)這個(gè)對(duì)象的字段及(2)區(qū)分字段與局部變量public( int age, string name )this.age = age; = name;(3) 用于構(gòu)造public調(diào)用另一個(gè)構(gòu)造,注意其位置() : this( 0, )/ 構(gòu)造的其他語句 ;13C#程序設(shè)計(jì)應(yīng)用示例:系統(tǒng) 系統(tǒng)中有幾類對(duì)象?Account, Bank, ATM 每個(gè)類中有什么字段、?
5、注:可在vs中,添加“類圖”(類圖)14C#程序設(shè)計(jì)3.2 屬性索引15C#程序設(shè)計(jì)使用屬性、索引的示例 使用屬性button1.Textp button1.Text = “說你好”; 含義相當(dāng)于button1.SetText( “說你好”);p string s = button1.Text; 含義相當(dāng)于s = button1.GetText(); 使用屬性 string s=“abcde”;p 求出長(zhǎng)度: s.Length 含義上相當(dāng)于s.GetLength(); 使用索引 string s=“abcde”;p 求出第0個(gè)字符: s0 含義上相當(dāng)于s.Get(0)16屬性(property
6、)的書寫C#程序設(shè)計(jì)private string _name;public string Namegetreturn _name;set_name = value;17C#程序設(shè)計(jì)在C#3以上版中可簡(jiǎn)寫為 public string Name set; get; 18C#程序設(shè)計(jì)對(duì)屬性進(jìn)行p = new();p.Name = “Li Ming”;Console.WriteLine( p.Name ); 編譯器產(chǎn)生的是:void set_Name( string value );string get_Name();PC#程序設(shè)計(jì)屬性與字段的比較 由于屬性實(shí)際上是 所以屬性可以具有優(yōu)點(diǎn),p 可以只
7、讀或只寫:只有g(shù)et或setp 可以進(jìn)行有效性檢查: ifp 可以是計(jì)算得到的數(shù)據(jù):public string Infogetreturn Name: + Name +,Age: + Age;p 可以定義抽象屬性20C#程序設(shè)計(jì)索引器(Indexer)類型名 this 參數(shù)列表 修飾符setget21C#程序設(shè)計(jì)使用索引 對(duì)象名 參數(shù) 編譯器自動(dòng)產(chǎn)生兩個(gè) T get_Item(P);,以供調(diào)用: void set_Item(P, T value);IrRecord.cs22C#程序設(shè)計(jì)屬性與索引的比較IrBitArray.cs23屬性索引器通過名稱標(biāo)識(shí)通過參數(shù)列表進(jìn)行標(biāo)識(shí)通過簡(jiǎn)單名稱來通過運(yùn)算
8、符來可以用static修飾不能用static修飾屬性的get器沒有參數(shù)索引的get器具有與索引相同的參數(shù)列表屬性的set器包含隱式value參數(shù)除了value參數(shù)外,索引的set器還具有與索引相同的參數(shù)列表C#程序設(shè)計(jì)3.3 類的繼承24C#程序設(shè)計(jì)使用繼承的示例 我們定義的窗體p public class Form1 : System.Windows.Forms.Formp 神奇的冒號(hào)25C#程序設(shè)計(jì)繼承(inheritance) 子類subclass、父類baseclass C#中采用單繼承 所有的類都是通過直接或間接地繼承 object(即System.Object)得到的。class
9、SubClass : BaseClass 26C#程序設(shè)計(jì)示例classStudent:/.27C#程序設(shè)計(jì)繼承 子類自動(dòng)地從父類那里繼承所有的p 字段、屬性、索引器等成員作為的成員。 除了繼承父類的成員外,子類還可以p 添加新的成員,p 隱藏或修改父類的成員。28C#程序設(shè)計(jì)字段的繼承、添加與隱藏classApublic int a;classB : Anew public int a;29C#程序設(shè)計(jì)的繼承、添加的繼承(自動(dòng))的添加(多定義一些)30C#程序設(shè)計(jì)與父類同名的 一是定義同名、但參數(shù)列表(簽名)與父類不同的,這稱為對(duì)父類的重載(Overloading) 二是定義同名且參數(shù)列表也
10、與父類相同的,這稱為新增加法,用new表示 三是定義同名且參數(shù)列表也與父類相同的abstract或virtual進(jìn)行了修飾,子類的同名,而且父類的用了用了override進(jìn)行了修飾,這稱為虛的覆蓋(Overriding)。IFieldMethod.cs31C#程序設(shè)計(jì)使用basevoid sayHello()base.sayHello();Console.WriteLine( My school is + school );Student(string name, int age, string school ) : base( name, age )this.school = school;
11、32C#程序設(shè)計(jì)父類與子類的轉(zhuǎn)換p2 = new Student(); Student s1 = new Student();Student s2 = new Student();p1 = s1; /可以,因?yàn)镾tudent對(duì)象類型的變量可以s2 = p1; /不行,因?yàn)闀?huì)產(chǎn)生編譯錯(cuò)誤s2 = (Student) p1; / 編譯時(shí)可以通過,運(yùn)行時(shí)則會(huì)出現(xiàn)類型不能轉(zhuǎn)換的異常s2 = (Student) p2; /正確,因?yàn)閜2的正好是Student對(duì)象實(shí)例33C#程序設(shè)計(jì)as運(yùn)算符 如果不能轉(zhuǎn)換,則值為nullStudent;/結(jié)果s3為nullStudent;/s4被賦值p Studentp
12、 Students3 =s4 =p1p2asas 與強(qiáng)制類型轉(zhuǎn)換的差別p as只能型變量p 如果不能轉(zhuǎn)換,as運(yùn)算引起異常,只是值為null34C#程序設(shè)計(jì)is運(yùn)算符 if( p is)一個(gè)對(duì)象是不能某個(gè)類(及其子類)的實(shí)例35C#程序設(shè)計(jì)typeof()運(yùn)算符 獲得其運(yùn)行時(shí)的類型p Type t = typeof(變量);p Type t = typeof(類名);36C#程序設(shè)計(jì)屬性、索引的繼承 屬性、索引也是可以繼承的37C#程序設(shè)計(jì)3.4 修飾符38C#程序設(shè)計(jì)符39符同類中相同的子類相同的非子類不同的子類不同的非子類publicYesYesYesYesYesprotectedinte
13、rnalYesYesYesYesprotectedYesYesYesinternalYesYesYesprivateYesC#程序設(shè)計(jì)static static的字段、屬性是屬于整個(gè)類的中,不能實(shí)例變量p staticp 調(diào)用static時(shí),直接用類名Console.Write();Math.Sqrt();Convert.ToDateTime(); DateTime.ParseString.Copy(a);String.Format(“0”,x)p static變量可以用來表示“全局變量” 在c#2.0中,類名也可以用static來修飾SidInstance.cs40C#程序設(shè)計(jì)static構(gòu)
14、造classstatic long totalNum;static() totalNum = (long)52e8;Console.WriteLine(人類總?cè)丝?+ totalNum );Static構(gòu)造只會(huì)調(diào)用一次,但其調(diào)用時(shí)間是不確定的。41C#程序設(shè)計(jì)const及readonly const相當(dāng)于靜態(tài)常量p 如Math.PI readonly相當(dāng)于不可改量,只能賦一次值p 如String.Emptyp 在構(gòu)造 注:中賦值,或者在時(shí)就賦值p const 只能用于基本類型及stringp readonly只能修飾字段,而const還可以修飾局部變量ReadonlyColor.css.cs4
15、2C#程序設(shè)計(jì)sealed及abstract sealed類,不可繼承(也有利于編譯優(yōu)化)p 如StringConsoleMathConvert Graphics Font abstract類,不可實(shí)例化(new)p 如Array, RandomNumberGenerator abstract的體,不用,用;p abstract類型p abstract類型名( 參數(shù)列表 );屬性名get;set;43C#程序設(shè)計(jì)抽象類表示了其子類的屬性AtShapeTest.cs44C#程序設(shè)計(jì)小結(jié) public/private/internal/protected 是符 static 屬于類的而非實(shí)例的 c
16、onst 常量readonly只讀量 sealed 不可繼承的abstract 抽象的4545C#程序設(shè)計(jì)3.5接口46C#程序設(shè)計(jì)接口(interface) 相似于抽象類 一個(gè)抽象成員的集合 如:ICloneable,IComparable,IConvertible,IDisposable,IFormattable,IEnumerable47C#程序設(shè)計(jì)幫助實(shí)現(xiàn)多重繼承48C#程序設(shè)計(jì)接口的用處 實(shí)現(xiàn)不相關(guān)類的相為 需要考慮這些類之間的層次 通過接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類 例如:p public sealed class String : IComparable,
17、ICloneable,IConvertible, IEnumerable49C#程序設(shè)計(jì)定義一個(gè)接口public interface IStringListvoid Add(string s); int Count get; string thisint index get; set; 注:publicabstract 這兩個(gè)不加50C#程序設(shè)計(jì)實(shí)現(xiàn)接口class 類名 : 父類, 接口, 接口, ,接口Terface.cs51C#程序設(shè)計(jì)顯式接口成員實(shí)現(xiàn)名前寫接口名p void IWindow.Close () 調(diào)用時(shí),只能用接口調(diào)用p ( ( IWindow ) f ).Close();
18、在不同接口的相同時(shí),能消除歧義IaceExplicitImpl.cs52C#程序設(shè)計(jì)第3章 面向?qū)ο蟮腃#語言3.6結(jié)構(gòu)及枚舉53C#程序設(shè)計(jì)結(jié)構(gòu)struct結(jié)構(gòu),如: Point, Color, Size, DateTime,Int32struct結(jié)構(gòu)名: 接口名結(jié)構(gòu)是隱式sealed;因此它們不能被繼承。54C#程序設(shè)計(jì)使用struct要注意 struct是值類型p 結(jié)構(gòu)不能包含無參數(shù)構(gòu)造p 每個(gè)字段在,不能給初始值p 構(gòu)造中,必須對(duì)每個(gè)字段進(jìn)行賦值p 實(shí)例化時(shí),使用new,但與型變量的內(nèi)存是不同的p 值類型變量在賦值時(shí),實(shí)行的是字段的copyrPoint.csStructNew.cs55
19、C#程序設(shè)計(jì)枚舉 (enum)如FontStyle, GraphicsUnit, KnownColor, DockStyle,DialogResult的屬性(注:后者可以跟一個(gè) : int )enum MyColorRed, Green=1, Blue=2Eolor.cs56C#程序設(shè)計(jì)使用枚舉 MyColor c = MyColor.Red; Console.WriteLine( c.ToString() ); c=p (MyColor) Enum.Parse( typeof(MyColor), Red);57C#程序設(shè)計(jì)第3章 面向?qū)ο蟮腃#語言3.7 面向?qū)ο缶幊?8C#程序設(shè)計(jì)面向?qū)ο驩O的三大特點(diǎn) Object Orientedp 繼承 inheritance 子類繼承父類的成員,還可增加、調(diào)用、隱藏 提高軟件模塊的可重用性和可擴(kuò)充性p 封裝 encapsulation 使用接口,而不關(guān)心具體的類 使用屬性,而將字段設(shè)為privatep 多態(tài)
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程項(xiàng)目管理協(xié)同工作試題及答案
- 2025-2030年鋁土礦行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- 2025-2030年配方奶粉市場(chǎng)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年谷氨酸行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年蒸汽機(jī)器人行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資研究報(bào)告
- 2025-2030年物流配送產(chǎn)業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年度教授委員會(huì)教授聘任合同示范文本
- 2025-2030年國(guó)內(nèi)空氣去濕器行業(yè)市場(chǎng)發(fā)展分析及投資發(fā)展前景研究報(bào)告
- 2025-2030年原油油田行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 市政工程考試政策更新對(duì)備考的影響與試題及答案
- ERP系統(tǒng)標(biāo)準(zhǔn)流程圖
- 01-《數(shù)值分析》實(shí)驗(yàn)指導(dǎo)書
- 日產(chǎn)汽車奇駿T30原廠維修手冊(cè)
- Oswestry功能障礙指數(shù)問卷表(ODI)(可編輯修改word版)
- 第四章 潛孔鉆機(jī)
- 佳能700D單反相機(jī)拍攝技巧[技巧]
- 農(nóng)產(chǎn)品批發(fā)市場(chǎng)管理技術(shù)規(guī)范編制說明
- 重慶市婚姻介紹合同協(xié)議書范本模板
- 律師事務(wù)所調(diào)查取證專用介紹信
- 學(xué)生數(shù)學(xué)學(xué)習(xí)評(píng)價(jià)表
- 氯氣在不同條件下的密度表
評(píng)論
0/150
提交評(píng)論