第3章面向?qū)ο蟮腃語(yǔ)言ppt課件_第1頁(yè)
第3章面向?qū)ο蟮腃語(yǔ)言ppt課件_第2頁(yè)
第3章面向?qū)ο蟮腃語(yǔ)言ppt課件_第3頁(yè)
第3章面向?qū)ο蟮腃語(yǔ)言ppt課件_第4頁(yè)
第3章面向?qū)ο蟮腃語(yǔ)言ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 第3章 面向?qū)ο蟮腃#言語(yǔ)唐大仕dstang2000263dstang本章內(nèi)容n類、域、方法n屬性、索引n類的承繼n修飾符n接口n構(gòu)造與枚舉n面向?qū)ο螅撼欣^、封裝、多態(tài)nUML類圖簡(jiǎn)介3.1 類、域、方法定義類中的域和方法class Person public string name;public int age;public void sayHello()Console.WriteLine(Hello! My name is + name );public string getInfo()return Name: + name + , Age: + age;構(gòu)造方法 n(1)構(gòu)造方法的方法

2、名與類名一樣。n(2)構(gòu)造方法沒(méi)有前往類型,也不能寫(xiě)void。n(3)構(gòu)造方法的主要作用是完成對(duì)象的初始化任務(wù)。n(4)構(gòu)造方法普通不能顯式地直接調(diào)用,而是用new來(lái)調(diào)用。缺省構(gòu)造方法 npublic Person() 析構(gòu)方法 nclass Person nn Person() nnn對(duì)象的創(chuàng)建nPerson p = new Person(“Liming, 20 ); name p age 對(duì)象的運(yùn)用nConsole.WriteLine( );np.sayHello();方法的重載,簽名 public void sayHello()Console.WriteLine(Hello

3、! My name is + name );public void sayHello( Person another )Console.WriteLine(Hello, + + ! My name is + name );OverloadingTest.cs運(yùn)用this public Person( int age, string name )this.age = age; = name;public Person( ) : this( 0, )/ 構(gòu)造方法的其他語(yǔ)句 ;運(yùn)用例如:銀行系統(tǒng)n系統(tǒng)中有幾類對(duì)象?Account, Bank, ATMn每個(gè)

4、類中有什么域、方法?注:可在vs中,插入“類關(guān)系圖3.2 屬性、索引 運(yùn)用屬性、索引的例如n運(yùn)用屬性 button1.Text nbutton1.Text = “說(shuō)他好;n含義相當(dāng)于button1.SetText( “說(shuō)他好);nString s = button1.Text;n含義相當(dāng)于s = button1.GetText();n運(yùn)用屬性 string s=“abcde;n求出長(zhǎng)度: s.Lengthn含義上相當(dāng)于s.GetLength();n運(yùn)用索引 string s=“abcde; n求出第0個(gè)字符: s0n含義上相當(dāng)于s.Get(0)private string myName;pub

5、lic string Nameget return myName; set myName = value; 在C#新版中可簡(jiǎn)寫(xiě)為public string Name set; get; 對(duì)屬性進(jìn)展訪問(wèn) nPerson p = new Person();np.Name = “Li Ming;nConsole.WriteLine( p.Name );n編譯器產(chǎn)生的方法是:nvoid set_Name( string value );nstring get_Name(); PersonProperty.cs屬性與域的比較 n1屬性可以實(shí)現(xiàn)只讀或只寫(xiě),而域不能。n2屬性的set方法可以對(duì)用戶指定的值v

6、alue,進(jìn)展有效性檢查,從而保證只需正確的形狀才會(huì)得到設(shè)置,而域不能。n3屬性的get方法不僅可以前往域變量的值,還可以前往一些經(jīng)過(guò)計(jì)算或處置過(guò)的數(shù)據(jù),如上例中的只讀屬性Info,它前往的由Name及Age組合過(guò)的字符串。n4由于屬性在實(shí)現(xiàn)時(shí),實(shí)踐上是方法,所以可以具有方法的一些優(yōu)點(diǎn),如可以定義籠統(tǒng)屬性等等。索引(Indexer) 修飾符 類型名 this 參數(shù)列表 set get運(yùn)用索引 n對(duì)象名 參數(shù) n編譯器自動(dòng)產(chǎn)生兩個(gè)方法,以供調(diào)用:nT get_Item(P);nvoid set_Item(P, T value);IndexerRecord.cs屬性與索引的比較 屬屬 性性索索 引

7、引經(jīng)過(guò)稱號(hào)標(biāo)識(shí)經(jīng)過(guò)參數(shù)列表進(jìn)展標(biāo)識(shí)經(jīng)過(guò)簡(jiǎn)單稱號(hào)來(lái)訪問(wèn)經(jīng)過(guò)運(yùn)算符來(lái)訪問(wèn)可以用static修飾不能用static修飾屬性的get訪問(wèn)器沒(méi)有參數(shù)索引的get訪問(wèn)器具有與索引一樣的參數(shù)列表屬性的set訪問(wèn)器包含隱式value參數(shù)除了value參數(shù)外,索引的set訪問(wèn)器還具有與索引一樣的參數(shù)列表IndexerBitArray.cs3.3 類的承繼 運(yùn)用承繼的例如n我們定義的窗體npublic class Form1 : System.Windows.Forms.Form承繼(inheritance) n子類subclass、父類baseclassn單承繼n一切的類都是經(jīng)過(guò)直接或間接地承繼object(即

8、System.Object)得到的。class SubClass : BaseClass 例如class Student : Person /.承繼n子類自動(dòng)地從父類那里承繼一切域、方法、屬性、索引等成員作為本人的成員。n除了承繼父類的成員外,子類還可以添加新的成員,還可以隱藏或修正父類的成員。 域的承繼、添加與隱藏 class Apublic int a;class B : Anew public int a;方法的承繼、添加n方法的承繼n方法的添加與父類同名的方法n一是定義同名、但參數(shù)列表簽名與父類不同的方法,這稱為對(duì)父類方法的重載Overloading n二是定義同名且參數(shù)列表也與父類一

9、樣的方法,這稱為新添加一種方法 ,用new表示n三是定義同名且參數(shù)列表也與父類一樣的方法,而且父類的方法用了abstract或virtual進(jìn)展了修飾,子類的同名方法用了override進(jìn)展了修飾,這稱為虛方法的覆蓋Overriding。 InheritFieldMethod.cs運(yùn)用base void sayHello()base.sayHello();Console.WriteLine( My school is + school );Student(string name, int age, string school ) : base( name, age )this.school =

10、 school;父類與子類的轉(zhuǎn)換 Person p1 = new Person();Person p2 = new Student();Student s1 = new Student();Student s2 = new Student();p1 = s1; /可以,由于Person類型的變量可以援用Student對(duì)象s2 = p1; /不行,由于會(huì)產(chǎn)生編譯錯(cuò)誤s2 = (Student) p1; / 編譯時(shí)可以經(jīng)過(guò),運(yùn)轉(zhuǎn)時(shí)那么會(huì)出現(xiàn)類型不能轉(zhuǎn)換的異常s2 = (Student) p2; /正確,由于p2援用的正好是Student對(duì)象實(shí)例as運(yùn)算符n假設(shè)不能轉(zhuǎn)換,那么值為nullnStude

11、nt s3 = p1 as Student; /結(jié)果s3為nullnStudent s4 = p2 as Student; /s4被賦值n與強(qiáng)迫類型轉(zhuǎn)換的差別nas只能針對(duì)援用型變量n假設(shè)不能轉(zhuǎn)換,as運(yùn)算不會(huì)引起異常,只是值為null is運(yùn)算符nif( p is Person )n判別一個(gè)對(duì)象是不能某個(gè)類(及其子類)的實(shí)例typeof()運(yùn)算符n獲得其運(yùn)轉(zhuǎn)時(shí)的類型nType t = typeof(變量);nType t = typeof(類名);屬性、索引的承繼 3.4 修飾符 訪問(wèn)控制符 訪問(wèn)控制訪問(wèn)控制符符同類同類中中一樣程序集一樣程序集的子類的子類一樣程序集一樣程序集的非子類的非子類

12、不同程序集不同程序集的子類的子類不同程序集不同程序集的非子類的非子類publicYesYesYesYesYesprotected internalYesYesYesYes protectedYesYes Yes internalYesYesYes privateYes static nstatic的域、方法、屬性是屬于整個(gè)類的nstatic方法中,不能訪問(wèn)實(shí)例變量 n調(diào)用static方法時(shí),直接用類名訪問(wèn) nConsole.Write(); Math.Sqrt();nConvert.ToDateTime(); DateTime.ParsenString.Copy(a);String.Forma

13、t(“0,x)nstatic變量可以用來(lái)表示“全局變量n在c#2.0中,類名也可以用static來(lái)修飾StaicAndInstance.csstatic構(gòu)造方法 class Person static long totalNum;static Person() totalNum = (long)52e8;Console.WriteLine(人類總?cè)丝?+ totalNum );Static構(gòu)造方法只會(huì)調(diào)用一次,但其調(diào)用時(shí)間是不確定的。const及readonly nconst相當(dāng)于靜態(tài)常量n如Math.PInreadonly相當(dāng)于不可改量,只能賦一次值n如String.Emptyn在構(gòu)造方法中

14、賦值,或者在聲明時(shí)就賦值n注:nconst 只能用于根本類型及string假設(shè)用于其他類型那么無(wú)意義,由于只能為null值。nreadonly只能修飾域,而const還可以修飾部分變量Constans.csReadonlyColor.cssealed及abstract nsealed類,不可承繼(也有利于編譯優(yōu)化)n如String Console Math Convert Graphics Fontnabstract類,不可實(shí)例化newn如Array, RandomNumberGeneratornabstract的方法體,不用,用;nabstract 類型 方法名( 參數(shù)列表 );nabstr

15、act 類型 屬性名get;set;籠統(tǒng)類表示了其子類的屬性AbstractShapeTest.cs3.5 接口 接口(interface) n類似于籠統(tǒng)類n一個(gè)籠統(tǒng)成員的集合n如:ICloneable, IComparable, IConvertible, IDisposable, IFormattable, IEnumerable 協(xié)助實(shí)現(xiàn)多重承繼接口的用途 n實(shí)現(xiàn)不相關(guān)類的一樣行為 n需求思索這些類之間的層次關(guān)系 n經(jīng)過(guò)接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類 n例如:npublic sealed class String : IComparable, ICloneable,

16、 IConvertible, IEnumerable定義一個(gè)接口 public interface IStringListvoid Add(string s);int Count get; string thisint index get; set; 注:public abstract 這兩個(gè)關(guān)鍵詞不加實(shí)現(xiàn)接口 class 類名 : 父類, 接口, 接口, ,接口TestInterface.cs顯式接口成員實(shí)現(xiàn) n方法名前寫(xiě)接口名nvoid IWindow.Close () n調(diào)用時(shí),只能用接口調(diào)用n( ( IWindow ) f ).Close(); n在不同接口的方法一樣時(shí),能消除歧義 I

17、nterfaceExplicitImpl.cs3.6 構(gòu)造及枚舉 構(gòu)造struct構(gòu)造,如: Point, Color, Size, DateTime, Int32 struct 構(gòu)造名 : 接口名構(gòu)造是隱式sealed;因此它們不能被承繼。運(yùn)用struct要留意nstruct是值類型n構(gòu)造不能包含無(wú)參數(shù)構(gòu)造方法 n每個(gè)域在定義時(shí),不能給初始值n構(gòu)造方法中,必需對(duì)每個(gè)域進(jìn)展賦值n實(shí)例化時(shí),運(yùn)用new,但與援用型變量的內(nèi)存是不同的n值類型變量在賦值時(shí),實(shí)行的是域的copyStructNew.csStructPoint.cs枚舉 (enum)如FontStyle, GraphicsUnit, Kn

18、ownColor, DockStyle, DialogResult聲明本人的屬性enum MyColor (注:后者可以跟一個(gè) : int )Red, Green=1,Blue=2EnumColor.cs運(yùn)用枚舉nMyColor c = MyColor.Red; nConsole.WriteLine( c.ToString() ); nc = n(MyColor) Enum.Parse( typeof(MyColor), Red);3.7 面向?qū)ο缶幊堂嫦驅(qū)ο驩OnObject Oriented方法的三大特點(diǎn)n承繼 inheritancen子類承繼父類的成員,還可添加、調(diào)用、隱藏n提高軟件模塊的可重用性

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論