Csharp中對象的創建ppt課件_第1頁
Csharp中對象的創建ppt課件_第2頁
Csharp中對象的創建ppt課件_第3頁
Csharp中對象的創建ppt課件_第4頁
Csharp中對象的創建ppt課件_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第一節:概述第一節:概述第二節:第二節:C# 語言的基本原理語言的基本原理第三節:第三節:C# 中對象的創建中對象的創建第四節:面向對象的編程技術第四節:面向對象的編程技術第五節:第五節: C# 程序編程程序編程第六節第六節: 創建創建 Windows應用程序應用程序第七節:第七節:應用程序設置和部署應用程序設置和部署第七章第七章 C Sharp 編程編程 課程內容課程內容3C#中對象的創建中對象的創建內容:內容: 類的定義類的定義 聲明方法聲明方法 構造函數構造函數 使用類的靜態成員使用類的靜態成員命名空間命名空間 學習完本節后,你將能夠:學習完本節后,你將能夠:定義類定義類創建對象創建對象

2、 使用訪問修飾符定義類成員的作用域使用訪問修飾符定義類成員的作用域使用命名空間來組織類使用命名空間來組織類類類 的的 定義定義 3.1萬物皆對象萬物皆對象世間萬物皆為對象,狗、建筑、汽車世間萬物皆為對象,狗、建筑、汽車對象都具有狀態和行為對象都具有狀態和行為對象都有類型對象都有類型任何對象都是某個類的實例,是屬于某個類的對象任何對象都是某個類的實例,是屬于某個類的對象每個對象都利用別的對象來組建自己。每個對象都利用別的對象來組建自己。 汽車汽車 = = 發動機發動機 + + 輪胎輪胎 + + 方向盤方向盤 + + 剎車剎車 + + 一只蛤蟆一張嘴,兩只眼睛四條腿一只蛤蟆一張嘴,兩只眼睛四條腿

3、換言之,你通過將已有的對象打成一個包,來創建新的對換言之,你通過將已有的對象打成一個包,來創建新的對象。由此,你可以將程序的復雜性,隱藏在對象的簡單性象。由此,你可以將程序的復雜性,隱藏在對象的簡單性之下之下類類 和和 對對 象象 3.1.1類類 和和 對對 象象 3.1.1類是對象的模板,它定義了對象的公共屬性和行類是對象的模板,它定義了對象的公共屬性和行為(方法)。屬性和方法共同稱作類的成員為(方法)。屬性和方法共同稱作類的成員對象是類的實例,是具體的對象是類的實例,是具體的對象必須使用對象必須使用 new new 進行實例化才可以使用進行實例化才可以使用類類 和和 對對 象象 3.1.1

4、 類 對象球員(模板) 卡卡(具體化)姓名 姓名 = 卡卡國籍國籍 = 巴西擅長腳 擅長 = 右傳球( ) 傳“直傳球”射門( ) 射門“遠射”屬性屬性方法方法類類 和和 對對 象象 3.1.1類:類:相對對象而言,類似于相對對象而言,類似于模板或藍圖模板或藍圖包含方法和數據包含方法和數據對象:對象:w 是類的實例是類的實例w 使用關鍵字使用關鍵字 new 創建創建w 對象具有狀態和行為對象具有狀態和行為定義類和創建對象定義類和創建對象 3.1.3類是對象的模板,使用對象前必須先創建類類是對象的模板,使用對象前必須先創建類語法:語法:訪問修飾符 class 類名 字段; /描述對象的狀態 方法

5、; /實現對象的行為 構造函數; /初始化對象定義類的字段定義類的字段 3.1.3字段是用來描述一個類的對象的狀態和特征的,字段是用來描述一個類的對象的狀態和特征的,如人的名字、性別、年齡等如人的名字、性別、年齡等語法:語法:示例:示例:訪問修飾符 數據類型 字段名 = 缺省值class People public string name; /姓名字段 public string sex; /性別字段 定義類的方法定義類的方法 3.1.3方法是一組指令集合,用來實現一個類的對象方法是一組指令集合,用來實現一個類的對象的行為,如人會的行為,如人會“使用工具使用工具”,獅子會,獅子會“咬人咬人”語

6、法:語法: 訪問修飾符 返回值類型 方法名 (參數) 指令集合; /方法體 注意:有關方法的詳細介紹,將在下小一節給出定義類的構造函數定義類的構造函數 3.1.3構造函數是一個特殊的方法,用來在創建對象構造函數是一個特殊的方法,用來在創建對象時完成對象的初始化工作時完成對象的初始化工作語法:語法: 訪問修飾符 類名 (參數) 指令集合; /方法體 注意:有關構造函數的詳細介紹,將在下小一節給出定義類和創建對象定義類和創建對象 3.1.3示例:示例: 一個簡單的類,只包含了幾個字段一個簡單的類,只包含了幾個字段class People public string name; public str

7、ing sex;創創 建建 對對 象象 3.1.3對象是類的實例,是具體的。要使用對象,必對象是類的實例,是具體的。要使用對象,必須使用關鍵字須使用關鍵字new 實例化類的一個對象實例化類的一個對象語法:語法:示例:示例: = new People object1 = new People();使使 用用 對對 象象 3.1.3實例化一個對象之后,就可以訪問和使用對象實例化一個對象之后,就可以訪問和使用對象的字段和方法了(成員)。的字段和方法了(成員)。使用點取符使用點取符.來訪問成員來訪問成員示例:示例:People object1 = new People(); =

8、 “小明”;object1.sex = “男”;3C#中對象的創建中對象的創建內容:內容: 類的定義類的定義 聲明方法聲明方法 構造函數構造函數 使用類的靜態成員使用類的靜態成員 命名空間命名空間聲聲 明明 方方 法法 3.2學習完本章后,你將能夠:學習完本章后,你將能夠:編寫方法編寫方法給方法傳遞參數給方法傳遞參數重載方法重載方法如何編寫方法如何編寫方法 3.2.1語法:語法: 訪問修飾符 返回值類型 方法名 (參數) 指令集合; /方法體 如何編寫方法如何編寫方法 3.2.1返回值是指當方法執行結束時,方法返回結果的返回值是指當方法執行結束時,方法返回結果的數據類型。例如:對數據類型。例如

9、:對2個整數進行求和的方法,其個整數進行求和的方法,其返回值類型就是整形返回值類型就是整形如果方法沒有返回值,使用如果方法沒有返回值,使用void關鍵字關鍵字參數是可選的,表示傳遞給方法中要處理的數據,參數是可選的,表示傳遞給方法中要處理的數據,例如:對例如:對2個整數進行求和的方法,就需要個整數進行求和的方法,就需要2個整個整形的參數形的參數參數的聲明方法和變量一樣,如果有多個參數,參數的聲明方法和變量一樣,如果有多個參數,參數之間用,分開參數之間用,分開如何編寫方法如何編寫方法 3.2.1示例:示例: 給類增加方法給類增加方法class People public string name;

10、 public string sex;/可以使用道具加害于人,此方法需要2個參數,即道具和被加害人 public void useTool(string tool, People o) Console.WriteLine(“將0用于1”,tool, ); 如何使用方法如何使用方法 示例:示例: 方法也是類的成員,同樣使用點取符方法也是類的成員,同樣使用點取符.來訪問和使用來訪問和使用People object1 = new People(); = “小明”;object1.sex = “男”;People object2 = new People();obj

11、 = “小美”;object2.sex = “女”;/小明投一顆飛彈給小美object1.useTool(“飛彈”, object2);/小美還小明一枚臭彈object2.useTool(“臭彈”, object1);給方法傳遞參數給方法傳遞參數 3.2.2當調用方法時,傳遞參數的個數、數據類型、順當調用方法時,傳遞參數的個數、數據類型、順序必須與方法簽名一致序必須與方法簽名一致方法名方法名+方法的參數列表合稱為方法簽名方法的參數列表合稱為方法簽名class SimpleMath public int Add(int x, int y) return x+y; /調用方法時需

12、要傳遞參數SimpleMath sums = new SimpleMath();int total = sums.Add(20,30);方法重載方法重載 3.2.5在同一個類中可以定義多個方法,它們享有相同的名字,在同一個類中可以定義多個方法,它們享有相同的名字,但是方法的參數不同,或者參數類型不同,或者參數個數但是方法的參數不同,或者參數類型不同,或者參數個數不同,這就叫方法重載不同,這就叫方法重載只有返回值類型不同,不是方法重載,會產生編譯時錯誤只有返回值類型不同,不是方法重載,會產生編譯時錯誤方法被調用時,系統會根據你提供的參數類型或參數個數,方法被調用時,系統會根據你提供的參數類型或參

13、數個數,幫你從多個方法中選擇正確的那個幫你從多個方法中選擇正確的那個構造方法也可以重載構造方法也可以重載 思考題:為什么使用方法重載?思考題:為什么使用方法重載?你負責編寫一段打印程序,要打印的數據包括整型、浮點你負責編寫一段打印程序,要打印的數據包括整型、浮點型、字符串類型、日期類型等等,且不同數據類型打印方型、字符串類型、日期類型等等,且不同數據類型打印方法也不相同,怎么辦?法也不相同,怎么辦?解決辦法:解決辦法:只好為每一種數據類型編寫一個單獨的打印方法了只好為每一種數據類型編寫一個單獨的打印方法了w printInt()w printFloat()w printString()w pr

14、intDate()方法重載方法重載 3.2.5 思考題:為什么使用方法重載呢?思考題:為什么使用方法重載呢?更好的解決辦法:更好的解決辦法:使用一個公共的方法名使用一個公共的方法名print( ),然后通過方法重載實現不,然后通過方法重載實現不同數據類型的打印同數據類型的打印w print ( int i )w print ( float f )w print ( String s )w print ( Date d )所有功能相似的方法共享同一個名字,更容易記憶所有功能相似的方法共享同一個名字,更容易記憶方法重載方法重載 3.2.5示例:示例: 重新編寫重新編寫useTool方法,如果指定了

15、被加害人,則將道具應用于這方法,如果指定了被加害人,則將道具應用于這 一個人;否則將道具應用于所有人一個人;否則將道具應用于所有人方法重載方法重載 3.2.5class People/將道具應用于指定的人 public void useTool(string tool, People o) Console.WriteLine(“將0用于1”,tool, ); /將道具應用于所有人 public void useTool(string tool) Console.WriteLine(“將0用于所有人”,tool); 當輸入三個當輸入三個/ 后,后,VS.NET 就會插入幾行就會插入幾

16、行 XML 代碼,可代碼,可以為成員添加描述信息以為成員添加描述信息在代碼編輯器在代碼編輯器 中,當在對象名后面輸入中,當在對象名后面輸入“.” 操作符后,操作符后,VS .NET 會顯示對象的成員列表會顯示對象的成員列表使用使用 XML代碼注釋功能代碼注釋功能 3.2.63C#中對象的創建中對象的創建內容:內容: 類的定義類的定義 聲明方法聲明方法 構造函數構造函數 使用類的靜態成員使用類的靜態成員 命名空間命名空間 構造函數構造函數 3.3構造函數是一個很特殊的方法(因為沒有返回值)。每構造函數是一個很特殊的方法(因為沒有返回值)。每個類都顯示或隱式的包涵一個構造方法,用來初始化該個類都顯

17、示或隱式的包涵一個構造方法,用來初始化該類的一個新的對象類的一個新的對象構造函數和類具有相同的名稱,且沒有返回值。構造函數和類具有相同的名稱,且沒有返回值。構造函數負責:構造函數負責:w 為對象分配內存空間為對象分配內存空間w 成員變量的初始化成員變量的初始化示例示例: : class People public string name; public string sex;/構造函數 public People() sex = “男”; 如何初始化對象如何初始化對象 3.3.1當使用當使用new創建一個新的對象時,創建一個新的對象時,CLR會自動調用構造函會自動調用構造函數。數。示例:示例:

18、 class People public string name; public string sex;/構造函數 public People() sex = “男”; People obj = new People();如何初始化對象如何初始化對象 3.3.1如果沒有編寫構造函數,如果沒有編寫構造函數,C#會自動提供一個缺省的無參會自動提供一個缺省的無參的構造參數的構造參數示例:示例: class People public string name; 等價于: class People public string name; public People() 帶參數的構造函數帶參數的構造函數

19、3.3.1同其他方法一樣,構造函數可以帶參數同其他方法一樣,構造函數可以帶參數一旦我們定義了構造函數,一旦我們定義了構造函數,C#就不再提供缺省構造函數就不再提供缺省構造函數示例:示例: class People public string name;/帶參數的構造函數 public People(string s) name = s; People obj = new People(“小明”);People obj = new People(); /編譯錯誤!重載構造函數重載構造函數 3.3.2構造函數也可以重載,這樣就能夠以多種方式創建對象構造函數也可以重載,這樣就能夠以多種方式創建對象示

20、例:示例: class People public string name;/無參的構造函數 public People( ) sex = “男”; /帶參數的構造函數 public People(string s) name = s; People obj1 = new People(“小明”);People obj2 = new People(); 使用初始化列表使用初始化列表 3.3.2 思考題:思考題: 為什么使用初始化列表為什么使用初始化列表 class People public string name; public int age; public People( ) /構造函數

21、0 name = “unknow”; age = 0; public People(string sname) /構造函數1 name = sname; age = 0; public People(string sname,int theAge) /構造函數2 name = sname; age = theAge; 使用初始化列表使用初始化列表 3.3.2多個重載的構造函數常常很相似,大量重復代碼多個重載的構造函數常常很相似,大量重復代碼將公共代碼集中于一個構造函數中,由構造函數調用將公共代碼集中于一個構造函數中,由構造函數調用示例:示例: class People public strin

22、g name; public int age; public People( ):this(“unknow”,0) /構造函數0 public People(string sname):this(sname,0) /構造函數1 public People(string sname,int theAge) /構造函數2 name = sname; age = theAge; this 關鍵字關鍵字this是一個特殊的引用(指針),它指向的是是一個特殊的引用(指針),它指向的是“自己自己”,也,也就是當前對象就是當前對象this的作用:的作用:w 點取成員點取成員w 區分同名變量區分同名變量w 將

23、當前對象(自己)作為函數的參數進行傳遞將當前對象(自己)作為函數的參數進行傳遞w 作為方法名表示構造方法作為方法名表示構造方法this 關鍵字關鍵字class People public string name; public int age; public People(string name, int age) name = name ; = name; this.age = age;示例:示例: 使用使用this 區分同名變量區分同名變量3C#中對象的創建中對象的創建內容:內容: 類的定義類的定義 聲明方法聲明方法 構造函數構造函數 使用類的靜態成員使用類的靜態成員

24、命名空間命名空間 使用類的靜態成員使用類的靜態成員 3.4類可以具有靜態的屬性、靜態方法類可以具有靜態的屬性、靜態方法使用使用 static 關鍵字修飾關鍵字修飾靜態成員相當于靜態成員相當于“全局全局”的,不依賴于某一個具的,不依賴于某一個具體的對象體的對象類的靜態字段類的靜態字段 3.4.1static 修飾類的字段時,在一個類中只開辟一塊內修飾類的字段時,在一個類中只開辟一塊內存空間存儲,并在類的所有對象實例間共享,因存空間存儲,并在類的所有對象實例間共享,因此此static 變量也稱為類變量變量也稱為類變量class Cat string name ; static string foo

25、d; 類的靜態字段類的靜態字段 3.4.1static變量不依賴于具體對象,因此直接通過類名訪問,變量不依賴于具體對象,因此直接通過類名訪問,而不是通過類的對象實例訪問的而不是通過類的對象實例訪問的非靜態變量必須首先實例化類的一個對象,再通過對象訪非靜態變量必須首先實例化類的一個對象,再通過對象訪問,因此也稱為實例變量問,因此也稱為實例變量class Cat string name ; static string food; static void Main() Cat.food = “fish”; /OK C = “Kitty”; /錯誤 Cat cat1 = new Cat(

26、); = “Kitty”; /OK類的靜態字段類的靜態字段 3.4.1static變量類似于變量類似于C語言的全局變量語言的全局變量由于在所有的對象間共享,因此可以用于對象之間的通信由于在所有的對象間共享,因此可以用于對象之間的通信 思考題:思考題:怎樣統計被創建的怎樣統計被創建的Cat對象的總數?對象的總數?class Cat public static int count; public string name ; public Cat() count+; 類的靜態方法類的靜態方法 3.4.1static修飾的方法稱為靜態方法,是一個類的全局方法修飾的方法稱為靜態方法,

27、是一個類的全局方法靜態方法也叫作類方法,類名靜態方法也叫作類方法,類名.方法名方法名 沒有沒有static修飾的方法叫實例方法,對象名修飾的方法叫實例方法,對象名.方法名方法名注意事項:注意事項:w static方法中不能直接使用非靜態成員,因為非靜態成員與實例方法中不能直接使用非靜態成員,因為非靜態成員與實例相關,但可以通過對象點取間接使用相關,但可以通過對象點取間接使用w static方法中不能使用方法中不能使用this(與實例相關)(與實例相關)w 非非static方法中可以使用靜態成員方法中可以使用靜態成員3C#中對象的創建中對象的創建內容:內容: 類的定義類的定義 聲明方法聲明方法

28、構造函數構造函數 使用類的靜態成員使用類的靜態成員 命名空間命名空間 使用命名空間組織類使用命名空間組織類 3.1.4.NET框架類庫提供了幾百個類供程序員使用,程框架類庫提供了幾百個類供程序員使用,程序員也可以創建自己的類序員也可以創建自己的類如此眾多的類該如何管理呢?就如同硬盤上的文如此眾多的類該如何管理呢?就如同硬盤上的文件需要文件夾來組織,也可以將功能相似或相關件需要文件夾來組織,也可以將功能相似或相關的類組織到一起,這就是命名空間的類組織到一起,這就是命名空間NameSpace如果有多個類重名(不同的程序員開發),可以如果有多個類重名(不同的程序員開發),可以將類組織到不同的命名空間,以避免命名沖突將類組織到不同的命名空間,以避免命名沖突使用命名空間組織類使用命名空間組織類 3.1.4如同硬盤上的文件夾可以包含子文件夾一樣,一如同硬盤上的文件夾可以包含子文件夾一樣,一個命名空間可以再包

溫馨提示

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

評論

0/150

提交評論