概述c# 語言的基本原理c# 中對(duì)象_第1頁
已閱讀1頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第一章:概述第二章:C# 語言的基本原理第三章:C# 中對(duì)象的創(chuàng)建第四章:面向?qū)ο蟮木幊碳夹g(shù)第五章:C# 編程第六章:編寫基于 .NET 的應(yīng)用 程序第七章:使用 ADO.NET 訪問 數(shù)據(jù),第八章:創(chuàng)建基于 Windows 的應(yīng)用程序第九章:在 C# 應(yīng)用程序中使 用 XML Web Service第十章:創(chuàng)建 Web

2、 應(yīng)用程序十一章:應(yīng)用程序設(shè)置和 部署十二章:進(jìn)階學(xué)習(xí)目標(biāo),C#程序設(shè)計(jì)語言課程內(nèi)容,,C#中對(duì)象的創(chuàng)建,內(nèi)容:,類的定義 聲明方法 構(gòu)造函數(shù) 使用類的靜態(tài)成員,C#,學(xué)習(xí)完本節(jié)后,你將能夠:定義類創(chuàng)建對(duì)象 使用訪問修飾符定義類成員的作用域使用命名空間來組織類,類 的 定義 3.1,萬物皆對(duì)象世間萬物皆為對(duì)象,狗、建筑、汽車…

3、…對(duì)象都具有狀態(tài)和行為對(duì)象都有類型任何對(duì)象都是某個(gè)類的實(shí)例,是屬于某個(gè)類的對(duì)象阿土仔 ------〉人類每個(gè)對(duì)象都利用別的對(duì)象來組建自己。 汽車 = 發(fā)動(dòng)機(jī) + 輪胎 + 方向盤 + 剎車 + ……一只蛤蟆一張嘴,兩只眼睛四條腿 換言之,你通過將已有的對(duì)象打成一個(gè)包,來創(chuàng)建新的對(duì)象。由此,你可以將程序的復(fù)雜性,隱藏在對(duì)象的簡單性之下,類 和 對(duì) 象 3.1.1,類 和 對(duì) 象

4、 3.1.1,類是對(duì)象的模板,它定義了對(duì)象的公共屬性和行為(方法)。屬性和方法共同稱作類的成員對(duì)象是類的實(shí)例,是具體的對(duì)象必須使用 new 進(jìn)行實(shí)例化才可以使用,類 和 對(duì) 象 3.1.1,,類 對(duì)象人類 (模板) 阿土仔(具體化)姓名 姓名 = 阿土仔性別

5、 性別 = 男使用卡片( ) 使用“陷害卡”使用道具( ) 使用“飛彈”,,,,,屬性,方法,類 和 對(duì) 象 3.1.1,類:相對(duì)對(duì)象而言,類似于模板或藍(lán)圖包含方法和數(shù)據(jù),對(duì)象:是類的實(shí)例使用關(guān)鍵字 new 創(chuàng)建對(duì)象具有狀態(tài)和行為,對(duì)象,,類,定義類和創(chuàng)建對(duì)象 3.1.3,類是對(duì)象的模板,使

6、用對(duì)象前必須先創(chuàng)建類語法:,[訪問修飾符] class 類名 { 字段; //描述對(duì)象的狀態(tài) 方法; //實(shí)現(xiàn)對(duì)象的行為 構(gòu)造函數(shù); //初始化對(duì)象},定義類的字段 3.1.3,字段是用來描述一個(gè)類的對(duì)象的狀態(tài)和特征的,如人的名字、性別、年齡等語法:示例:,[訪

7、問修飾符] 數(shù)據(jù)類型 字段名 [= 缺省值],class People{ public string name; //姓名字段 public string sex; //性別字段 …},定義類的方法 3.1.3,方法是一組指令集合,用來實(shí)現(xiàn)一個(gè)類的對(duì)象的行為,如人會(huì)“使用工具”,獅子會(huì)“咬人”語法:,[訪問修飾符] 返回值類型 方法名

8、(參數(shù)) { 指令集合; //方法體 }注意:有關(guān)方法的詳細(xì)介紹,將在下一節(jié)給出,定義類的構(gòu)造函數(shù) 3.1.3,構(gòu)造函數(shù)是一個(gè)特殊的方法,用來在創(chuàng)建對(duì)象時(shí)完成對(duì)象的初始化工作語法:,[訪問修飾符] 類名 (參數(shù)) { 指令集合; //方法體 }注意:有關(guān)構(gòu)造函數(shù)的詳細(xì)介紹,將在下一節(jié)給出,定義類和創(chuàng)建對(duì)象

9、 3.1.3,示例: 一個(gè)簡單的類,只包含了幾個(gè)字段,class People{ public string name; public string sex;},創(chuàng) 建 對(duì) 象 3.1.3,對(duì)象是類的實(shí)例,是具體的。要使用對(duì)象,必須使用關(guān)鍵字new 實(shí)例化類的一個(gè)對(duì)象語法:示例:, = new ,People ob

10、ject1 = new People();,使 用 對(duì) 象 3.1.3,實(shí)例化一個(gè)對(duì)象之后,就可以訪問和使用對(duì)象的字段和方法了(成員)。使用點(diǎn)取符.來訪問成員示例:,People object1 = new People();object1.name = “阿土仔”;object1.sex = “男”;……,,C#中對(duì)象的創(chuàng)建,內(nèi)容:,類的定義 聲明方法

11、 構(gòu)造函數(shù) 使用類的靜態(tài)成員,C#,聲 明 方 法 3.2,學(xué)習(xí)完本章后,你將能夠:編寫方法給方法傳遞參數(shù)使用 ref 引用參數(shù)使用 out 輸出參數(shù)重載方法,如何編寫方法 3.2.1,語法:,[訪問修飾符] 返回值類型 方法名 (參數(shù)) { 指令集合; //方法體 },如何編寫方法

12、 3.2.1,返回值是指當(dāng)方法執(zhí)行結(jié)束時(shí),方法返回結(jié)果的數(shù)據(jù)類型。例如:對(duì)2個(gè)整數(shù)進(jìn)行求和的方法,其返回值類型就是整形如果方法沒有返回值,使用void關(guān)鍵字參數(shù)是可選的,表示傳遞給方法中要處理的數(shù)據(jù),例如:對(duì)2個(gè)整數(shù)進(jìn)行求和的方法,就需要2個(gè)整形的參數(shù)參數(shù)的聲明方法和變量一樣,如果有多個(gè)參數(shù),參數(shù)之間用,分開,如何編寫方法 3.2.1,示例

13、: 給類增加方法,class People{ public string name; public string sex;//可以使用道具加害于人,此方法需要2個(gè)參數(shù),即道具和被加害人 public void useTool(string tool, People o) { Console.WriteLine(“將{0}用于{1}”,tool, o.name); }},如何使用方法,示例: 方法

14、也是類的成員,同樣使用點(diǎn)取符.來訪問和使用,People object1 = new People();object1.name = “阿土仔”;object1.sex = “男”;People object2 = new People();object2.name = “孫小美”;object2.sex = “女”;//阿土仔投一顆飛彈給孫小美object1.useTool(“飛彈”, object2);//孫

15、小美還阿土仔一枚臭彈object2.useTool(“臭彈”, object1);,給方法傳遞參數(shù) 3.2.2,當(dāng)調(diào)用方法時(shí),傳遞參數(shù)的個(gè)數(shù)、數(shù)據(jù)類型、順序必須與方法簽名一致方法名+方法的參數(shù)列表合稱為方法簽名,,class SimpleMath { public int Add(int x, int y){ return x+y; }}//調(diào)用方法時(shí)需要傳遞參數(shù)Si

16、mpleMath sums = new SimpleMath();int total = sums.Add(20,30);,定義類和創(chuàng)建對(duì)象,練 習(xí),參閱教材p69頁課堂練習(xí)3.1.6,方法重載 3.2.5,,在同一個(gè)類中可以定義多個(gè)方法,它們享有相同的名字,但是方法的參數(shù)不同,或者參數(shù)類型不同,或者參數(shù)個(gè)數(shù)不同,這就叫方法重載只有返回值類型不同,不是方法重載,會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤方法被調(diào)用時(shí)

17、,系統(tǒng)會(huì)根據(jù)你提供的參數(shù)類型或參數(shù)個(gè)數(shù),幫你從多個(gè)方法中選擇正確的那個(gè)構(gòu)造方法也可以重載,思考題:為什么使用方法重載?你負(fù)責(zé)編寫一段打印程序,要打印的數(shù)據(jù)包括整型、浮點(diǎn)型、字符串類型、日期類型等等,且不同數(shù)據(jù)類型打印方法也不相同,怎么辦?解決辦法:只好為每一種數(shù)據(jù)類型編寫一個(gè)單獨(dú)的打印方法了printInt()printFloat()printString()printDate(),?,方法重載

18、 3.2.5,思考題:為什么使用方法重載呢?更好的解決辦法:使用一個(gè)公共的方法名print( ),然后通過方法重載實(shí)現(xiàn)不同數(shù)據(jù)類型的打印print ( int i )print ( float f )print ( String s )print ( Date d )所有功能相似的方法共享同一個(gè)名字,更容易記憶,?,方法重載 3.2.5,示例: 重新編寫useT

19、ool方法,如果指定了被加害人,則將道具應(yīng)用于這 一個(gè)人;否則將道具應(yīng)用于所有人,方法重載 3.2.5,class People{//將道具應(yīng)用于指定的人 public void useTool(string tool, People o){ Console.WriteLine(“將{0}用于{1}”,tool, o.name); }//將道具應(yīng)用于所有人

20、 public void useTool(string tool){ Console.WriteLine(“將{0}用于所有人”,tool); }},當(dāng)輸入三個(gè)/// 后,VS.NET 就會(huì)插入幾行 XML 代碼,可以為成員添加描述信息在代碼編輯器 中,當(dāng)在對(duì)象名后面輸入“.” 操作符后,VS .NET 會(huì)顯示對(duì)象的成員列表,使用 XML代碼注釋功能 3.2.6,編寫和調(diào)用方法

21、 3.2.7,練 習(xí),參見教材P81頁3.2.7 課堂練習(xí),,C#中對(duì)象的創(chuàng)建,內(nèi)容:,類的定義 聲明方法 構(gòu)造函數(shù) 使用類的靜態(tài)成員,C#,構(gòu)造函數(shù) 3.3,構(gòu)造函數(shù)是一個(gè)很特殊的方法(因?yàn)闆]有返回值)。每個(gè)類都顯示或隱式的包涵一個(gè)構(gòu)造方法,用來初始化該類的一個(gè)新的對(duì)象構(gòu)造函數(shù)和類具有相同的名稱,且沒有返回值。構(gòu)造函數(shù)負(fù)責(zé):為對(duì)象分

22、配內(nèi)存空間成員變量的初始化示例:,class People { public string name; public string sex;//構(gòu)造函數(shù) public People(){ sex = “男”; } },如何初始化對(duì)象 3.3.1,當(dāng)使用new創(chuàng)建一個(gè)新的對(duì)象時(shí),CLR會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。示例:,class People { pub

23、lic string name; public string sex;//構(gòu)造函數(shù) public People() { sex = “男”; } } People obj = new People();,,,,如何初始化對(duì)象 3.3.1,如果沒有編寫構(gòu)造函數(shù),C#會(huì)自動(dòng)提供一個(gè)缺省的無參的構(gòu)造參數(shù)示例:,class People { public st

24、ring name; }等價(jià)于: class People { public string name; public People() { } },帶參數(shù)的構(gòu)造函數(shù) 3.3.1,同其他方法一樣,構(gòu)造函數(shù)可以帶參數(shù)一旦我們定義了構(gòu)造函數(shù),C#就不再提供缺省構(gòu)造函數(shù)示例:,class People { public string name;//帶參數(shù)的構(gòu)造函數(shù) p

25、ublic People(string s) { name = s; } }People obj = new People(“阿土仔”);People obj = new People(); //編譯錯(cuò)誤!,重載構(gòu)造函數(shù) 3.3.2,構(gòu)造函數(shù)也可以重載,這樣就能夠以多種方式創(chuàng)建對(duì)象示例:,class People { public string name;

26、//無參的構(gòu)造函數(shù) public People( ) { sex = “男”; }//帶參數(shù)的構(gòu)造函數(shù) public People(string s) { name = s; } }People obj1 = new People(“阿土仔”);People obj2 = new People();,使用初始化列表 3.3.2,思考題:

27、 為什么使用初始化列表,class People { public string name; public int age; public People( ) //構(gòu)造函數(shù)0 { name = “unknow”; age = 0; } public People(string sname) //構(gòu)造函數(shù)1 { name = sname; age = 0; } publ

28、ic People(string sname,int theAge) //構(gòu)造函數(shù)2 { name = sname; age = theAge; } },?,使用初始化列表 3.3.2,多個(gè)重載的構(gòu)造函數(shù)常常很相似,大量重復(fù)代碼將公共代碼集中于一個(gè)構(gòu)造函數(shù)中,由構(gòu)造函數(shù)調(diào)用示例:,class People { public string name; publi

29、c int age; public People( ):this(“unknow”,0) //構(gòu)造函數(shù)0 { } public People(string sname):this(sname,0) //構(gòu)造函數(shù)1 { } public People(string sname,int theAge) //構(gòu)造函數(shù)2 { name = sname; age = theAge;

30、 } },this 關(guān)鍵字,this是一個(gè)特殊的引用(指針),它指向的是“自己”,也就是當(dāng)前對(duì)象this的作用:點(diǎn)取成員區(qū)分同名變量將當(dāng)前對(duì)象(自己)作為參數(shù),傳遞給其他對(duì)象的方法作為方法名表示構(gòu)造方法,this 關(guān)鍵字,class People { public string name; public int age; public People(string name, int

31、 age){ name = name ; this.name = name; this.age = age;},示例: 使用this 區(qū)分同名變量,使用構(gòu)造函數(shù) 3.3.3,練 習(xí),參見教材P86頁3.3.3 課堂練習(xí),,C#中對(duì)象的創(chuàng)建,內(nèi)容:,類的定義 聲明方法 構(gòu)造函數(shù) 使用類的靜態(tài)成員,C#,使用類的靜態(tài)成員

32、 3.4,類可以具有靜態(tài)的成員,如靜態(tài)字段、靜態(tài)方法使用 static 關(guān)鍵字修飾靜態(tài)成員相當(dāng)于“全局”的,不依賴于某一個(gè)具體的對(duì)象,類的靜態(tài)字段 3.4.1,static 修飾類的字段時(shí),在一個(gè)類中只開辟一塊內(nèi)存空間存儲(chǔ),并在類的所有對(duì)象實(shí)例間共享,因此static 變量也稱為類變量,class Cat { string name ; static

33、 string food; },,,,,1name,2name,3name,4name,food,類的靜態(tài)字段 3.4.1,static變量不依賴于具體對(duì)象,因此直接通過類名訪問,而不是通過類的對(duì)象實(shí)例訪問的非靜態(tài)變量必須首先實(shí)例化類的一個(gè)對(duì)象,再通過對(duì)象訪問,因此也稱為實(shí)例變量,class Cat { string name ; static string food

34、; },static void Main(){ Cat.food = “fish”; //OK Cat.name = “Kitty”; //錯(cuò)誤 Cat cat1 = new Cat(); cat1.name = “Kitty”; //OK},類的靜態(tài)字段 3.4.1,static變量類似于C語言的全局變量由于在所有的對(duì)象間共享,因此可以用于對(duì)象之間的通信

35、 思考題:怎樣統(tǒng)計(jì)被創(chuàng)建的Cat對(duì)象的總數(shù)?,class Cat { public static int count; public string name ; public Cat(){ count++; }},?,,,,,1cat1,2cat2,3cat3,4cat4,count = 4,類的靜態(tài)方法 3.4.1,static修飾的方法

36、稱為靜態(tài)方法,是一個(gè)類的全局方法靜態(tài)方法也叫作類方法,類名.方法名 沒有static修飾的方法叫實(shí)例方法,對(duì)象名.方法名注意事項(xiàng):static方法中不能直接使用非靜態(tài)成員,因?yàn)榉庆o態(tài)成員與實(shí)例相關(guān),但可以通過對(duì)象點(diǎn)取間接使用static方法中不能使用this(與實(shí)例相關(guān))非static方法中可以使用靜態(tài)成員,使用類的靜態(tài)成員 3.4.3,練 習(xí),參見教材P91頁3.4.3 課堂練習(xí),使用

37、命名空間組織類 3.1.4,.NET框架類庫提供了幾百個(gè)類供程序員使用,程序員也可以創(chuàng)建自己的類如此眾多的類該如何管理呢?就如同硬盤上的文件需要文件夾來組織,也可以將功能相似或相關(guān)的類組織到一起,這就是命名空間namespace如果有多個(gè)類重名(不同的程序員開發(fā)),可以將類組織到不同的命名空間,以避免命名沖突,使用命名空間組織類 3.1.4,如同硬盤上的文件夾可以包含子文件夾一樣,

38、一個(gè)命名空間可以再包含命名空間,形成嵌套層次硬盤上文件夾間層次用\表示,命名空間的層次用.表示 c:\windows\system32\index.html NameSpace.subNameSpace.Class 如:System . IO . File namespace namespace class,,,,使用命名空間組織類 3.1.4,創(chuàng)建命名空間嵌套的命名

39、空間,namespace Microsoft {class People () { }},namespace Microsoft {namespace Sales {public class People () { }}}// 或者namespace Microsoft.Sales { ... },使用命名空間組織類 3.1.4,使用完全限定的名字使用using 指定類所在的

40、命名空間,People obj = new People(); //錯(cuò)誤!Microsoft.Sales.People obj = new Microsoft.Sales.People(); //OK,using System;using Microsoft.Sales;People obj = new People() //OK,在 .NET 框架類庫中的類是通過一個(gè)命名空間層次結(jié)

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論