C#-程序設(shè)計教程第5章_第1頁
C#-程序設(shè)計教程第5章_第2頁
C#-程序設(shè)計教程第5章_第3頁
C#-程序設(shè)計教程第5章_第4頁
C#-程序設(shè)計教程第5章_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章面向?qū)ο?/p>

06二月2023第五章面向?qū)ο?/p>

5.1

面向?qū)ο蟪绦蛟O(shè)計概述5.2

類的定義和對象的創(chuàng)建5.3類的字段和屬性5.4索引器5.5方法定義及調(diào)用5.6值類型與引用類型06二月2023第五章面向?qū)ο螅ɡm(xù))

5.7參數(shù)的傳遞5.8變量的作用域5.9構(gòu)造函數(shù)5.10靜態(tài)成員5.11內(nèi)部類和匿名類06二月20235.1面向?qū)ο蟪绦蛟O(shè)計概述原有簡單類型已無法方便處理學(xué)生信息。C#程序設(shè)計語言(包括其他所有的面向?qū)ο蟪绦蛟O(shè)計語言)給出一種由程序開發(fā)者自行設(shè)計數(shù)據(jù)類型的技術(shù)和方法,這種可以用于創(chuàng)建變量的復(fù)雜的數(shù)據(jù)類型有一個統(tǒng)一的稱呼:類。C#語言中微軟提供了大量的類以方便完成程序開發(fā)。面向?qū)ο蟪绦蛟O(shè)計中的核心概念包括:類和對象。簡單地說,類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。對象則是以類為數(shù)據(jù)類型聲明或創(chuàng)建的變量。為什么需要類06二月20235.2類的定義和對象的創(chuàng)建1.類的定義類作為復(fù)雜的數(shù)據(jù)類型,內(nèi)部可以包括:屬性、字段、方法以及內(nèi)部類。類在使用前,必須先聲明,聲明類使用關(guān)鍵字class,語法格式為:屬性

訪問控制符class類名{ //類的屬性、字段、方法、內(nèi)部類}06二月20235.2類的定義和對象的創(chuàng)建1.類的定義類以及類的成員(包括類的屬性、字段、方法、事件、委托以及內(nèi)部類)可以通過訪問控制符控制其可訪問性,此部分內(nèi)容,參見后續(xù)面向?qū)ο蟾呒墤?yīng)用內(nèi)容,本章全用public訪問控制符,public關(guān)鍵字不能省略。根據(jù)代碼規(guī)范化的要求及行業(yè)規(guī)范,類名用能代表類意義的單詞組成,每個單詞首字母大寫,同時,類名還必須符合標(biāo)識符的命名規(guī)則,修飾類的屬性一般并不是必須的。06二月20235.2類的定義和對象的創(chuàng)建1.類的定義創(chuàng)建類時,一般一個類的聲明放在一個獨立的源文件中,只有當(dāng)兩個類有非常密切的關(guān)系時才會把多個類的聲明放在同一個源文件中。

例:完成“學(xué)生類”Student的聲明并添加必要的注釋。06二月20235.2類的定義和對象的創(chuàng)建2.對象的聲明及創(chuàng)建設(shè)計類的目的就是為了根據(jù)需要創(chuàng)建一種新的數(shù)據(jù)類型,最終將用于聲明和創(chuàng)建對應(yīng)滿足要求的變量,類創(chuàng)建的變量又稱為對象。和創(chuàng)建簡單數(shù)據(jù)類型的變量一樣,復(fù)雜數(shù)據(jù)類型的變量也需要先聲明。例:聲明一個“學(xué)生類”Student類型的變量(對象)。06二月20235.2類的定義和對象的創(chuàng)建2.對象的聲明及創(chuàng)建聲明了firstStudent對象后,與簡單數(shù)據(jù)類型變量不同的是,類聲明的對象還必須先創(chuàng)建,然后才能使用,因為此時firstStudent對象還不存在。創(chuàng)建對象的關(guān)鍵字是new,語法格式為:

new類名();例:創(chuàng)建一個“學(xué)生類”Student類型的變量(對象)。06二月20235.3類的字段和屬性在前一節(jié)已聲明了用于管理學(xué)生信息的專用類Student,但是實際上還無法管理學(xué)生的任何信息,為了使類能夠管理需要管理的信息,在類的內(nèi)部常常需要定義類的成員,類的成員包括字段、屬性、常量、方法、事件、索引器、構(gòu)造函數(shù)、析構(gòu)函數(shù)以及內(nèi)部類等。06二月20235.3類的字段和屬性字段是在類范圍聲明的變量。字段是其包含類型的成員,字段可以是內(nèi)置數(shù)值類型或其他類的實例。例如,日歷類可能具有一個包含當(dāng)前日期的字段。字段的聲明語法格式為:訪問控制符

數(shù)據(jù)類型

字段名字段聲明在類的直接內(nèi)部。例:為Student類添加字段,用以保存學(xué)生姓名、學(xué)號、電話號碼、生日等基本信息。1.類的字段聲明06二月20235.3類的字段和屬性字段名稱必須附合標(biāo)識符的相關(guān)規(guī)則,建議同時遵循相關(guān)的代碼規(guī)范化要求。字段聲明后,類創(chuàng)建的對象自動都具備了同名的內(nèi)部變量,但不同對象,其同名字段值可以不一樣。字段的數(shù)據(jù)類型如果是簡單數(shù)據(jù)類型,則對象創(chuàng)建后,其字段值同時自動設(shè)置為對應(yīng)數(shù)據(jù)類型的默認值,如字段數(shù)據(jù)類型是復(fù)雜數(shù)據(jù)類型(如類),則字段值自動設(shè)置為null。1.類的字段聲明06二月20235.3類的字段和屬性對象創(chuàng)建后,可以通過對象名和對應(yīng)的字段名實現(xiàn)對相應(yīng)對象的字段進行訪問,以設(shè)置字段的值或讀取字段的值。訪問對象的屬性時,通過“.”運算符實現(xiàn),語法格式為:對象名.字段名當(dāng)其出現(xiàn)在賦值符號右側(cè)時是讀取對應(yīng)字段值,在賦值符號左側(cè)時是把賦值符號右側(cè)的值保存到對象的字段中。例:創(chuàng)建兩個Student對象,訪問各字段值。2.類的字段訪問06二月20235.3類的字段和屬性在聲明類的字段時,必須注意,只有同一類型的對象都具備的共同特征才聲明為類的字段。在聲明類的字段時,請注意添加字段的注釋,其方法與類的注釋添加方法相同,字段注釋添加后,在引用字段時,IDE會自動顯示對應(yīng)的字段注釋內(nèi)容,方便編寫代碼,減少代碼編寫錯誤。2.類的字段訪問06二月20235.3類的字段和屬性類的字段不能很好滿足程序設(shè)計的要求,同時不便于程序的修改。C#一般把字段設(shè)計為非public類型,提供“屬性”來訪問字段。屬性是這樣的成員:它們提供靈活的機制來讀取、編寫或計算私有字段的值??梢韵袷褂霉矓?shù)據(jù)成員一樣使用屬性,但實際上它們是稱作“訪問器”的特殊方法。這使得可以輕松訪問數(shù)據(jù),此外還有助于提高方法的安全性和靈活性。3.類的屬性聲明06二月20235.3類的字段和屬性屬性聲明的基本語法格式為:訪問控制符

屬性數(shù)據(jù)類型

屬性名{get{return字段名;}set{字段名=value;}}注意,set中的value變量名不能變。其中的get又稱為get屬性訪問器,set又稱為set屬性訪問器。例:修改原有Stuent類定義,為所有字段添加對應(yīng)屬性。3.類的屬性聲明06二月20235.3類的字段和屬性由于字段不再能直接進行訪問,但程序仍需要讀取和保存相關(guān)信息,此時屬性的訪問將替代原有字段的訪問內(nèi)容。訪問對象的屬性方法和訪問對象的字段方法一樣,通過“.”運算符實現(xiàn),語法格式為:對象名.屬性名4.類的屬性訪問06二月20235.3類的字段和屬性當(dāng)對象的屬性在賦值符號右側(cè)時,是讀取屬性的值,即執(zhí)行屬性中的get訪問器,得到get訪問器的返回值。當(dāng)對象的屬性在賦值符號左側(cè)時,是設(shè)置屬性的值,即執(zhí)行屬性中的set訪問器,把賦值符右側(cè)的值保存到屬性對應(yīng)的字段中,執(zhí)行set訪問器的代碼時,value變量自身則已保存了賦值符號右側(cè)的值。例:修改Student,通過屬性訪問學(xué)生信息。4.類的屬性訪問屬性:是類提供給外部調(diào)用時用的,可以使用對象.屬性設(shè)置或讀取一個值get{returexxx;}表示可讀set{xxx=value;}表示可寫字段:就是類內(nèi)部用的.存儲數(shù)據(jù)屬性簡介3-2classStudent{privatestaticstring_name;privatestaticstring_id;publicvoidSetId(value){ //驗證輸入長度小于2 if(_id.Length>2) _id=value;}publicstringGetId(){ return_id;}}方法SetId(Value)和GetId()分別讀取和寫入學(xué)生ID

…Students;s.SetId("A1");stringStudentId=s.GetId()…每次都調(diào)用GetId()和SetId()方法會很繁瑣屬性屬性簡介3-3classStudent{privatestaticstring_name;privatestaticstring_id;publicstringId{ get { return_id; } set { //驗證輸入長度小于2 if(_id.Length>2) _id=value; } }}讀取

ID時調(diào)用將值賦給ID時調(diào)用

屬性類型4-1

[訪問修飾符]數(shù)據(jù)類型屬性名

{ get{}; set{};}讀/寫屬性可以賦值和檢索值屬性類型4-2[訪問修飾符]數(shù)據(jù)類型屬性名{ get{};}只讀屬性只能檢索值屬性類型

4-3[訪問修飾符]數(shù)據(jù)類型屬性名{set{};}只寫屬性只能賦值classAccount{

privateint_accountNo;//帳號

privatedouble_balance;//余額

privatedouble_interest;//利息

privatestaticdouble_interestRate;//利率

//構(gòu)造函數(shù)初始化類成員

publicAccount(intNo,doublebal) {

this._accountNo=No;

this._balance

=bal; }

//只讀AccountNumber

屬性

publicintAccountNumber {

get {

return_accountNo; } }演示……定義和調(diào)用屬性4-1

只讀屬性

06二月20235.4索引器當(dāng)對象中包括多個同類型的成員時,需要快捷方便的方式訪問指定序號對應(yīng)的成員,此時可以使用索引器。索引器允許類的實例就像數(shù)組一樣進行索引。索引器類似于屬性,不同之處在于它們的訪問器采用參數(shù)。通過集合來管理多個同類對象的情況一般都可以設(shè)計索引器以訪問集合中的對象。1.定義索引器06二月20235.4索引器(1)使用索引器可以用類似于數(shù)組的方式為對象建立索引。(2)get訪問器返回值。set訪問器分配值。(3)this關(guān)鍵字用于定義索引器。(4)value關(guān)鍵字用于定義由

set索引器分配的值。(5)索引器不必根據(jù)整數(shù)值進行索引,由您決定如何定義特定的查找機制。(6)索引器可被重載。(7)索引器可以有多個形參,例如當(dāng)訪問二維數(shù)組時。索引器具有以下特點:06二月20235.4索引器例:在原有Student類的基礎(chǔ)上,創(chuàng)建一個學(xué)生班級類(StudentClass),并在其中創(chuàng)建了索引器,以方便訪問指定序號的學(xué)生對象。06二月20235.4索引器索引器與屬性類似,通過get和set訪問器來訪問對應(yīng)的對象,但寫法不同,索引器的使用一般是通過包含有索引器的對象名稱和索引對象的序號組成,如:對象名[索引序號],即是對應(yīng)的對象,當(dāng)它處于賦值符號左側(cè)時,即調(diào)用set訪問器,把賦值符號右側(cè)的值保存到索引器中,而當(dāng)它處于賦值符號右側(cè)時,即調(diào)用get訪問器,獲得索引到的對象。例:通過索引器來管理多個學(xué)生對象。2.應(yīng)用索引器06二月20235.5方法定義及調(diào)用方法是通過指定訪問控制符、返回值、方法名稱和參數(shù)在類中聲明的。這些統(tǒng)稱為方法的“簽名”。方法參數(shù)括在括號中,每個參數(shù)需要指明參數(shù)對應(yīng)的數(shù)據(jù)類型,并用逗號隔開,參數(shù)名必須符合標(biāo)識符規(guī)定。類中定義方法的基本語法格式為:方法的訪問控制符返回值類型

方法名(參數(shù)列表){//方法體,即方法中處理數(shù)據(jù)的實現(xiàn)過程;//如果需要還可以有返回值;}1.定義方法06二月20235.5方法定義及調(diào)用方法名必須符合C#語言中標(biāo)識符的規(guī)定,一般由方法所完成功能的英文名稱組成,各英文單詞的首字母大寫,推薦遵循代碼規(guī)范化要求設(shè)計方法名。方法定義的位置與類中的字段、屬性和索引器一樣,在類的直接內(nèi)部。1.定義方法06二月20235.5方法定義及調(diào)用例:為Student類定義ShowMessage方法以提供每個學(xué)生對象顯示自身基本信息的行為能力。例:定義StudentClass類中的方法,以顯示指定學(xué)號學(xué)生對象基本信息。例:定義StudentClass類中的方法,以查找指定學(xué)號學(xué)生對象。06二月20235.5方法定義及調(diào)用C#中,應(yīng)用已有代碼是通過調(diào)用對象的方法來實現(xiàn),其語法格式為:對象.方法名(參數(shù)列表)其中參數(shù)列表根據(jù)方法定義要求,傳遞對應(yīng)數(shù)量和數(shù)據(jù)類型的參數(shù)值,此參數(shù)稱為“實參”,實參可以是數(shù)值,也可以是對象。實參與形參的結(jié)合不是按參數(shù)名稱傳遞,而是按參數(shù)列表從左到右一一結(jié)合,所有對應(yīng)實參和形參必須是對應(yīng)數(shù)據(jù)類型。2.調(diào)用方法06二月20235.5方法定義及調(diào)用例:實現(xiàn)代碼重購,在StudentClass類中調(diào)用FindStudentByStudentId方法,修改主函數(shù),以顯示指定學(xué)號學(xué)生的基本信息。06二月20235.5方法定義及調(diào)用通過方法定義和調(diào)用,方法所實現(xiàn)的功能可以在只編寫一次代碼的情況下,多次被調(diào)用實現(xiàn),程序開發(fā)工作量更小,但卻更好維護,因為在需要修改方法實現(xiàn)功能時,只需要修改方法體中的代碼就可以。2.調(diào)用方法06二月20235.6值類型與引用類型C#的數(shù)據(jù)類型,在進行賦值和傳遞時,可以分為兩種值類型和引用類型。值類型變量直接包含其數(shù)據(jù),值類型包括內(nèi)置值類型、用戶定義的值類型以及枚舉類型,C#語言中的基本數(shù)據(jù)類型都是值類型。值類型在進行賦值時,僅僅把變量的值復(fù)制后設(shè)置到被賦值變量中,兩變量之間不再有聯(lián)系。1.值類型與引用類型06二月20235.6值類型與引用類型以下示例代碼中,修改值類型變量y的值將不會影響x變量的值。

intx;inty=10;x=y;//變量的值被賦值給了變量xConsole.WriteLine("x的值是:{0},y的值是:{1}",x,y);y=20;//修改y變量的值,但不會影響x變量的值Console.WriteLine("x的值是:{0},y的值是:{1}",x,y);程序執(zhí)行結(jié)果為:x的值是:10,y的值是:10x的值是:10,y的值是:201.值類型與引用類型06二月20235.6值類型與引用類型引用類型變量包含對其數(shù)據(jù)的引用,引用類型變量賦值的是對對象的引用,而不是復(fù)制對象的值,賦值后,兩個變量對應(yīng)的對象是同一個對象。引用類型包括接口、類以及數(shù)組。例:引用同一對象的兩Student變量相互影響。例:引用不同對象的兩Student變量相互影響。1.值類型與引用類型06二月20235.6值類型與引用類型在應(yīng)用過程中,簡單數(shù)據(jù)類型也可以轉(zhuǎn)化為object類型,轉(zhuǎn)化過程稱為裝箱;反之,從裝箱以后的變量中提取出值類型的過程則稱為拆箱。以下代碼把valueType變量裝箱后放到referenceType變量中:intvalueType=0;objectreferenceType=valueType;//裝箱以下代碼則是把上例中已裝箱的對象進行拆箱操作:intunBoxing=(int)referenceType;//拆箱,按int類型進行數(shù)據(jù)提取。2.裝箱與拆箱06二月20235.6值類型與引用類型注意:拆箱操作中,如果裝箱的原數(shù)據(jù)類型與拆箱預(yù)期的數(shù)據(jù)類型不兼容,在編譯過程沒有語法錯誤,但運行時將拋出異常:

stringvalueType=“abc”;objectreferenceType=valueType;//裝箱,原始數(shù)據(jù)不能轉(zhuǎn)化為int類型intunBoxing=(int)referenceType;//拆箱,按int類型進行數(shù)據(jù)提取,運行時將拋出異常此外,由于裝箱和拆箱比較耗費CPU資源,所以盡可能避免進行裝箱與拆箱過程。2.裝箱與拆箱06二月20235.7參數(shù)的傳遞方法在調(diào)用時,實參將把值賦值給形參,這個過程稱為實參與形參的結(jié)合,在賦值過程中,根據(jù)變量是值類型還是引用類型,分為按值傳遞和按引用傳遞。06二月20235.7參數(shù)的傳遞向方法傳遞值類型變量意味著向方法傳遞變量的一個副本。方法內(nèi)發(fā)生的對參數(shù)的更改對該變量中存儲的原始數(shù)據(jù)無任何影響。例:按值傳遞方式調(diào)用方法,但原始數(shù)據(jù)無任何影響。1.按值傳遞06二月20235.7參數(shù)的傳遞當(dāng)通過值傳遞引用類型的參數(shù)時,有可能更改引用所指向的數(shù)據(jù),如某類成員的值。但是無法更改引用本身的值;也就是說,不能使用相同的引用為新類分配內(nèi)存并使之在塊外保持。例:按引用傳遞方式調(diào)用方法,方法內(nèi)對數(shù)組中的元素進行的修改同樣影響方法外的數(shù)組。2.按引用傳遞06二月20235.7參數(shù)的傳遞對于方法內(nèi)部,如果修改變量本身引用的對象,則方法內(nèi)的引用變量的修改不會影響方法外的原始變量的所有數(shù)據(jù)。例:按引用方式傳遞參數(shù),方法內(nèi)對數(shù)組變量引用其他對象,則修改數(shù)組元素不影響原始數(shù)組。2.按引用傳遞06二月20235.7參數(shù)的傳遞在調(diào)用方法時,如需要在方法內(nèi)修改值類型變量后能影響原始變量值,或者需要在方法內(nèi)修改變量引用的對象后,仍使方法外的變量也自動引用方法體內(nèi)的新對象,可以明確地使用ref關(guān)鍵字聲明方法。使用ref關(guān)鍵字時,方法簽名中的參數(shù)列表中,需要使用ref方式傳遞的參數(shù)前,加上ref關(guān)鍵字;在調(diào)用方法時,對應(yīng)實參前也加上ref關(guān)鍵字即可。3.使用ref傳遞參數(shù)06二月20235.7參數(shù)的傳遞例:使用ref關(guān)鍵字,把值類型的參數(shù)傳遞方式改變成按引用方式傳遞參數(shù)同樣的效果。例:在引用類型參數(shù)前使用ref關(guān)鍵字,則方法內(nèi)設(shè)計形參引用新的對象后,原始參數(shù)也將引用新的對象。3.使用ref傳遞參數(shù)06二月20235.7參數(shù)的傳遞在某些情況下,參數(shù)在調(diào)用方法前無法確定對象,而是在訪問體中創(chuàng)建新的對象,此時可以使用out關(guān)鍵字,out關(guān)鍵字的使用方法及應(yīng)用效果與ref基本一致,但ref的參數(shù)在使用前需要初始化,而out關(guān)鍵字對應(yīng)的參數(shù)可以不初始化。4.使用out傳遞參數(shù)06二月20235.7參數(shù)的傳遞例:在值類型參數(shù)前使用out關(guān)鍵字,則方法內(nèi)對參數(shù)值的修改,影響原始參數(shù)的值。例:在引用類型參數(shù)前使用out關(guān)鍵字,則調(diào)用方法前實參可以不初始化方法內(nèi)設(shè)計形參引用新的對象后,原始參數(shù)也將引用新的對象。4.使用out傳遞參數(shù)06二月20235.7參數(shù)的傳遞out關(guān)鍵字除了用于需要使方法體內(nèi)對變量的修改影響原始變量的情況外,在被調(diào)用方法內(nèi)有多個數(shù)據(jù)或結(jié)果需要傳遞回調(diào)用函數(shù)時,除了其中之一可以通過返回值的形式返回,還可以用out關(guān)鍵字來輸出數(shù)據(jù)。4.使用out傳遞參數(shù)06二月20235.8變量的作用域程序元素的作用域是指可以引用該程序元素的代碼區(qū)域,對于類、接口以及類內(nèi)的方法、字段、屬性等的作用域?qū)⒃诤罄m(xù)訪問控制符的相關(guān)內(nèi)容中進一步講解,本節(jié)主要講解變量的作用域。C#中變量的作用域主要分:代碼塊變量方法內(nèi)部變量類的字段。06二月20235.8變量的作用域代碼塊變量是指變量只在一個代碼塊內(nèi)有效。C#語言的代碼塊一般是指以一對“{”和“}”為范圍的代碼集合,例如for、foreach等語句結(jié)構(gòu)后面的代碼集合都可以稱為代碼塊。一個代碼塊中聲明的變量只能在本代碼塊內(nèi)部有效,代碼塊外部則不能訪問代碼塊級變量。例:不同代碼塊中的同名變量。1.代碼塊變量06二月20235.8變量的作用域方法內(nèi)變量就是在方法內(nèi)部聲明的變量,此類變量的代碼域為從聲明變量開始到方法返回時結(jié)束,最具代表性的就是方法的形參,就某種意義而言,方法也可以被看作為一個代碼塊。方法內(nèi)變量的示例可參見上一節(jié)中有關(guān)參數(shù)傳遞的示例。2.方法內(nèi)變量06二月20235.8變量的作用域類的字段,類內(nèi)所有范圍內(nèi)都可以訪問,有時,還包括其它范圍,相關(guān)技術(shù)將在訪問控制符內(nèi)容中進一步討論。字段可以和方法內(nèi)變量或代碼塊變量同名,在同名范圍內(nèi),直接使用變量名是指方法內(nèi)變量或代碼塊變量,要使用字段,需加上關(guān)鍵字“this”及“.”運算符,以形成“this.字段名”整體標(biāo)識特指當(dāng)前對象的字段。例:方法內(nèi)變量與字段同名時的運行情況。3.字段06二月20235.9構(gòu)造函數(shù)每個類都有顯示或隱式地包含一個構(gòu)造函數(shù)。構(gòu)造函數(shù)是一種特殊的方法,該方法用來實現(xiàn)對象的初始化。構(gòu)造函數(shù)需要通過使用與其所屬類相同的名稱來定義。構(gòu)造函數(shù)在類實例化時由CLR自動調(diào)用。構(gòu)造函數(shù)的一般語法格式為:訪問控制符

構(gòu)造函數(shù)名(參數(shù)列表){ //構(gòu)造函數(shù)的方法體}例:為Student類創(chuàng)建構(gòu)造函數(shù)。1.構(gòu)造函數(shù)06二月20235.9構(gòu)造函數(shù)一個類的構(gòu)造函數(shù)可以有多個,這是構(gòu)造函數(shù)的重載。當(dāng)定義兩種或多種具有相同名稱的方法時,就稱作重載。2.構(gòu)造函數(shù)重載06二月20235.9構(gòu)造函數(shù)由于在一些特殊性況下會自動調(diào)用類的默認構(gòu)造函數(shù),所以除非特殊情況要求,否則,在明確提供了一個非默認構(gòu)造函數(shù)后,同時明確提供一個默認構(gòu)造函數(shù),如果一定需要禁止默認構(gòu)造函數(shù),則一般把默認構(gòu)造函數(shù)編碼后,再注釋掉此構(gòu)造函數(shù),并通過注釋說明注釋掉此構(gòu)造函數(shù)的原因。例:重載Student類的構(gòu)造函數(shù)。2.構(gòu)造函數(shù)重載06二月20235.9構(gòu)造函數(shù)在類的構(gòu)造函數(shù)中,通過使用關(guān)鍵字this,可以調(diào)用類中定義的一個特定構(gòu)造函數(shù)。使用方法是把this關(guān)鍵字添加到構(gòu)造函數(shù)聲明中,將調(diào)用對應(yīng)參數(shù)列表匹配的構(gòu)造函數(shù)。例:Student類的構(gòu)造函數(shù)調(diào)用本類的其他構(gòu)造函數(shù)。3.指定初始值設(shè)定項06二月20235.9構(gòu)造函數(shù)在些情特殊情況下,對象的字段需要使用修飾符readonly,此類字段只能在類或?qū)ο蟪跏蓟瘯r進行賦值,具體賦值過程可以在聲明中賦值,也可以在構(gòu)造函數(shù)中進行賦值。此類字段之所以不用常量,是因為這些字段的值在編寫代碼和編譯程序時不能確定其值,而是在類或?qū)ο蟪跏蓟瘯r才能確定值。例:修改Student類身份證號字段和屬生,使用readonly修飾符。4.readonly修飾符06二月20235.10靜態(tài)成員類中字段、屬性、索引器及方法的調(diào)用都必須通過“對象名”來實現(xiàn),類的這樣成員又被稱為實例成員,即它們都屬于某個具體的對象(即類的實例)。在某些情況下,同一類的所有對象需要共享數(shù)據(jù),此時實例成員不能滿足要求,為此設(shè)計了類的靜態(tài)成員。靜態(tài)成員屬于類,而不屬于實例,靜態(tài)構(gòu)造函數(shù)還可以初始化類。靜態(tài)成員是與類相聯(lián)系的概念,當(dāng)需要初始化或提供由類的所有實例共享的數(shù)值時,使用靜態(tài)成員很有用。06二月20235.10靜態(tài)成員由于靜態(tài)成員屬于類而不屬于實例,所以它們都是通過類而不是通過類的實例(對象)來訪問的。靜態(tài)成員:靜態(tài)屬性靜態(tài)字段靜態(tài)方法靜態(tài)構(gòu)造函數(shù)06二月20235.10靜態(tài)成員靜態(tài)字段的聲明格式與一般字段語法格式一樣,只是其修飾符為“static”。靜態(tài)字段一般通過類來訪問,但也可以通過實例來訪問。例:修改Student,添加一個靜態(tài)字段CollegeName,用于記錄全校學(xué)生共享的校名。1.靜態(tài)字段06二月20235.10靜態(tài)成員正如實例字段可以對應(yīng)設(shè)計屬性一樣,靜態(tài)字段也可以對應(yīng)設(shè)計靜態(tài)屬性,但靜態(tài)屬性必須是訪問的靜態(tài)字段的值。靜態(tài)屬性一般通過類來訪問,但也可以通過實例來訪問。例:修改Student,修改原有靜態(tài)字段CollegeName,并添加對象的靜態(tài)屬性。2.靜態(tài)屬性06二月20235.10靜態(tài)成員類的方法可以是靜態(tài)的,靜態(tài)方法只能通過類來調(diào)用,而不能通過實例(對象)來調(diào)用。靜態(tài)方法聲明和定義與一般方法聲明和定義的語法格式一樣,但其修飾符為“static”。靜態(tài)方法一般是全局的,當(dāng)成員引用或操作的信息是關(guān)于類的而不是類的實例時,這個成員就應(yīng)該設(shè)置成靜態(tài)成員。3.靜態(tài)方法06二月20235.10靜態(tài)成員靜態(tài)方法中,只能訪問類中的靜態(tài)字段或靜態(tài)屬性等類共享的信息,而不能訪問實例數(shù)據(jù)。例:修改Student,添加靜態(tài)方法用以獲取全校學(xué)生數(shù)量。3.靜態(tài)方法06二月20235.10靜態(tài)成員通過構(gòu)造函數(shù)可以初始化類的對象,也可以設(shè)計初始化類本身的構(gòu)造函數(shù),此類構(gòu)造函數(shù)稱為靜態(tài)構(gòu)造函數(shù),靜態(tài)構(gòu)造函數(shù)使用static修飾符,不能有訪問控制符。

溫馨提示

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

最新文檔

評論

0/150

提交評論