面向對象程序設計(C#)第章_第1頁
面向對象程序設計(C#)第章_第2頁
面向對象程序設計(C#)第章_第3頁
面向對象程序設計(C#)第章_第4頁
已閱讀5頁,還剩3頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、面向對象程序設計( C#)課程教案理論課第 5次課授課課題類與類成員1課時安排4 學時備 注1. 教案目的(1) 掌握類和對象的概念(2) 掌握字段(3) 掌握類中的常量(4) 掌握類的方法成員2. 教案重點(1) 掌握字段(2) 掌握類中的常量(1) 掌握類的方法成員3. 教案難點(1) 掌握字段(2) 掌握類中的常量(3) 掌握類的方法成員4. 教案方法 (請打 ):講授 討論 指導 其他 5. 教案手段 (請打 ):多媒體 模型 實物 掛圖 音像 其他6. 教案過程6.1引入( 5分鐘)。6.2 教案內容C#中沒有存在于類型(類、結構、接口、枚舉等)之外的全局變量和全局函數,所有的程序邏

2、輯和數據都必須放在一個類型定義中,通常情況下是一個類中。一、 類和對象1 / 8類是 C# 應用程序的基本組成單元,是在編寫應用程序時對系統中的相關概念進行抽象并進一步封裝的產物。1. 類的聲明類是 C# 中最重要的類型,它是一種數據結構,將狀態(數據成員)和操作(函數成員)封裝在一個獨立的單元中。聲明一個類使用關鍵字class,格式如下:訪問修飾符 class 類名/類的成員定義。訪問修飾符可以用來修飾類和類的成員,它指出了類或類的成員是否能夠被其他類的代碼合法引用。C#中的5 種訪問修飾符,見P51 表 4-1。省略了訪問修飾符,默認的訪問權限是internal 。2. 對象類在聲明之后,

3、通常情況下是不能直接使用的,需要創建這個類的對象(實例),并且聲明對這個對象的引用。聲明對象引用的格式如下:類名 對象名;C#中使用關鍵字new 來創建一個對象,其聲明格式如下:new 類名 ()。一般情況下,同時聲明對象引用和創建對象,格式如下:類名 對象(引用)名= new 類名 ();內存分配情況見P52 圖 4-1、 4-2對象成員的訪問,使用運算符“.”,其格式如下:對象名 .成員名類與對象的關系:類是相對抽象的概念,對象是相對具體的概念;類為生2 / 8成對象提供模板,有了模板就可以用new 運算符生成眾多具有相同結構(但是成員值可以不同)的對象。3. 類的成員類的意義和作用通過類

4、的成員來體現。類的成員類型見P53 表 4-2.二、 字段字段用來表示在類中定義的類與對象相關聯的變量成員。根據字段是跟實例對象還是和類相關,可以分為實例字段和靜態字段,另外還有只讀字段。1. 實例字段實例字段是與類的實例對象相關的字段,在該類的每個實例中都有它的數據副本。改變其中一個實例的某個實例字段,不會影響到其他實例中的相同字段。實例字段的聲明格式如下: 訪問修飾符 數據類型字段名 = 初始值 。如果省略訪問修飾符,默認的成員訪問權限為private ;如果省略初值賦值,則字段會根據其數據類型的不同而具有相應的默認值。實例字段的訪問:在類內,可以直接以字段名訪問;在類外,就必須先創建一個

5、該類的實例對象,然后通過“對象名.成員名”方式來訪問(前提是該字段的訪問權限允許該操作)。2. 靜態字段靜態,表明該字段是屬于類本身而不是屬于具體某一個實例對象,它被所有的實例共享。類的字段默認都是實例字段,只有在聲明時特別說明才為靜態的。靜態字段的聲明格式如下: 訪問修飾符 static 數據類型字段名 = 初始值 。在類外使用靜態字段時,無須創建類的實例,訪問格式為:3 / 8類名 .靜態字段名在類內,可以用上述訪問方式,也可以直接省略類名直接訪問。但是,任何時候都不能以“對象名 .靜態成員名”的方式來訪問靜態字段成員。靜態字段和實例字段內存分配情況見P58 圖 4-83. 只讀字段只讀字

6、段只能在聲明或者在構造函數中進行賦值,而在其他地方無法修改其值。聲明格式如下:訪問修飾符 readonly 數據類型字段名 = 初始值 ??梢杂?static 和 readonly 同時修飾成員,這樣就具有兩種訪問限制條件。三、 常量類中,常量是具有常數值的類的數據成員。在聲明常量時就要確定它們的值,而之后該值是不能再被修改的。常量數據成員的聲明格式為: 訪問修飾符 const 數據類型常量名 = 初始值;常量相當于是類的成員,不是對象的成員,因此訪問常量的方式和訪問靜態字段的一樣:類名 .常量名只讀字段 VS. 常量字段( 1)常量字段只能在聲明時賦值;只讀字段可在聲明時或構造函數中對其賦值

7、。( 2)常量字段在編譯時就必須確定其值;只讀字段可以在程序運行時確定(這是其賦值是放在構造函數中的)。( 3)常量字段默認是 static 的,即是類級別的成員;只讀字段可以是類的成員,也可以是對象的成員。四、 方法4 / 8一般情況下,方法包括方法聲明和方法體。方法聲明用來指定方法名稱、方法參數等;方法體用來描述該方法使用何種算法和結構來完成操作。1. 方法聲明方法聲明的一般格式如下: 訪問修飾符 返回值類型方法名稱 ( 參數列表 )。2. 方法體方法體是用來描述方法所要執行的語句序列,包含在一對大括號“ ”中。( 1)局部變量在方法體中定義的變量,一般稱為局部變量。定義格式如下:數據類型

8、 變量名稱 = 初始值 。局部變量 VS. 實例字段a)實例字段如未賦值,有默認初始值,而局部變量沒有默認初值。b)局部變量不能用訪問修飾符修飾。c)生存周期不同( 2) return 語句如果方法有返回值,則必須在方法中使用return 語句從方法中返回一個值,使用return 語句的格式如下:return 表達式;3. 實例方法與靜態方法用 static 修飾的方法就是靜態方法。實例方法屬于實例對象,靜態方法屬于類本身。實例方法 VS. 靜態方法( 1)靜態方法中不能引用類的實例成員,只能訪問靜態成員。( 2)調用格式不同。4. 方法調用5 / 8在類的外部,調用類的成員方法有兩種方式。實

9、例方法的調用格式:對象名 .實例方法名(參數列表);靜態方法的調用格式:類名 .靜態方法名(參數列表);而在類內部,不管是否是靜態方法,都可以用方法名(參數列表);方式來調用。5. 參數傳遞參數傳遞是指實參把數據傳遞給形參的方式,或是說方法調用方與方法之間傳遞信息的一種方式。( 1)值傳遞C#程序中,所有的參數默認都是通過值來傳遞的,除非特別說明。按值傳遞分為兩種形式:值類型的按值傳遞和引用類型的按值傳遞。值類型的按值傳遞本質是:實參將值復制一份傳遞給形參,形參接收了實參的值后與實參不再有任何聯系。這種傳遞是單向的,即形參值的改變不會影響到實參。當引用類型按值傳遞時,可能會更改所引用對象的數據

10、,如某類對象成員的值,但是無法更改引用(變量)本身的值,因為引用本身是按值來傳遞的。( 2)引用傳遞當使用“引用傳遞”方式傳遞參數時,在方法中對形參進行的任意修改都會反映在相應的實參中,這種方式又稱為雙向傳遞。在C# 中,可以用ref 和 out關鍵字來實現引用傳遞。當希望方法返回多個值時,可以將參數按引用來傳遞。a) ref 參數6 / 8使用方法:在定義方法時,在需要按引用傳遞的參數的類型說明符前加上關鍵字ref。在調用方法時,在按引用傳遞的實參之前也加上關鍵字ref 。另外,使用ref 進行引用傳遞之前,實參必須初始化。說明:引用傳遞和值傳遞的區別,當將實參的值傳遞給形參的時候,并沒有為

11、形參在棧中另外開辟存儲空間,而是相當于實參的一個“別名”。這樣一來,在方法體中對形參進行操作就相當于是對實參進行的操作,所有的改變都會被帶出方法。b) out 參數和 ref 類似,若要使用out 參數,方法定義和調用方法都必須顯式使用out關鍵字。關鍵字 ref VS. 關鍵字 out兩個關鍵字的區別在于哪個方法負責初始化參數。用ref 標識的參數,需要在調用該方法前,由調用方法就初始化好;用out 標識的參數,調用代碼在調用該方法之前可以不初始化該參數,即便初始化了,也會被被調用方法忽略掉。一言蔽之,out 參數不能將值帶進方法體,而只能將值帶出方法體。( 3) params 參數(參數數組)params 關鍵字,為方法提供一個可接受可變數目參數的能力。params 參數定義格式如下:方法修飾符返回類型方法名( params 類型 變量名)/方法體6. 方法重載方法簽名:方法的名稱和參數列表。同一個類中,每個方法的簽名必須是唯一的。7 / 8如果類中有兩個或更多個方法具有相同的名稱和不同的參數列表,則稱這些同名方法實現了方法重載(overload)。注意區分構成重載的條件和不構成重載的情況。7. 方法遞歸在方法體中調用自身就形成了方法的遞歸調用。注意:任何遞歸都必須至少具備一個能夠返回的條件,當滿足這個條件時,遞歸就進行回溯,這個條件叫做遞歸出口。在使用遞歸時注

溫馨提示

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

評論

0/150

提交評論