面向?qū)ο缶幊袒A (2)ppt課件_第1頁
面向?qū)ο缶幊袒A (2)ppt課件_第2頁
面向?qū)ο缶幊袒A (2)ppt課件_第3頁
面向?qū)ο缶幊袒A (2)ppt課件_第4頁
面向?qū)ο缶幊袒A (2)ppt課件_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 1 面向?qū)ο蟮木幊谈酌嫦驅(qū)ο蟮木幊谈?4.1 類4.2 構(gòu)造4.3 方法4.4 屬性與索引器2 24.1 4.1 類類類與對象類與對象類:一組具有一樣數(shù)據(jù)構(gòu)造和一樣操作的對象的集類:一組具有一樣數(shù)據(jù)構(gòu)造和一樣操作的對象的集合。合。 例如例如: :汽車汽車對象實例:類的實例化對象實例:類的實例化 。例如。例如: :卡車卡車留意:要運用對象,必需先定義類,然后再創(chuàng)建對象。留意:要運用對象,必需先定義類,然后再創(chuàng)建對象。對象的生存周期對象的生存周期對象在建立時分配了內(nèi)存,創(chuàng)建對象實踐上作了兩個對象在建立時分配了內(nèi)存,創(chuàng)建對象實踐上作了兩個方面的任務:方面的任務:1 1運用運用newnew保管

2、字要求系統(tǒng)分配內(nèi)存;保管字要求系統(tǒng)分配內(nèi)存;2 2運用構(gòu)造函數(shù)初始化數(shù)據(jù)。運用構(gòu)造函數(shù)初始化數(shù)據(jù)。銷毀對象也是做了兩個方面的任務:銷毀對象也是做了兩個方面的任務: 1 1釋放占用的內(nèi)存;釋放占用的內(nèi)存; 2 2將分配給對象的內(nèi)存歸還給堆將分配給對象的內(nèi)存歸還給堆HeapHeap。 3 34.1 4.1 類的組織類的組織1.1.類的聲明類的聲明用用classclass定義類,聲明類的方式為:定義類,聲明類的方式為: 附加聲明附加聲明 訪問修飾符訪問修飾符 class class 類稱號類稱號 : 基類基類 ,接口序列,接口序列 字段聲明字段聲明 構(gòu)造函數(shù)構(gòu)造函數(shù) 方法方法 事件事件 留意留意:中

3、的內(nèi)容可省或任中的內(nèi)容可省或任選其一選其一, ,當兩者都有時當兩者都有時, ,先基先基類后接口類后接口4 44.1 4.1 類的組織續(xù)類的組織續(xù)public class Childpublic class Child private int age; private int age; private string name; private string name; / / 不帶參數(shù)的構(gòu)造函數(shù)不帶參數(shù)的構(gòu)造函數(shù) public Child() public Child() name = none; name = none; / / 帶參數(shù)的構(gòu)造函數(shù)帶參數(shù)的構(gòu)造函數(shù) public Child(st

4、ring name, int age) public Child(string name, int age) 假設不指明,那假設不指明,那么么默以為默以為privateprivate5 54.1 4.1 類的組織續(xù)類的組織續(xù) = name; = name; this.age = age; this.age = age; / / 輸出方法輸出方法 public void PrintChild() public void PrintChild() Console.WriteLine(0, 1 years Console.WriteLine(0, 1 year

5、s old., name, age);old., name, age); public class Programpublic class Program 6 64.1 4.1 類的組織續(xù)類的組織續(xù) public static void Main() public static void Main() / /運用運用newnew關(guān)鍵字創(chuàng)建對象,關(guān)鍵字創(chuàng)建對象,newnew后是調(diào)用的構(gòu)造函數(shù)后是調(diào)用的構(gòu)造函數(shù) Child child1 = new Child(Zhang San, 11); Child child1 = new Child(Zhang San, 11); Child child2

6、 = new Child(Li Si, 10); Child child2 = new Child(Li Si, 10); Child child3 = new Child(); Child child3 = new Child(); / / 顯示結(jié)果顯示結(jié)果 Console.Write(Child #1: ); Console.Write(Child #1: ); child1.PrintChild(); child1.PrintChild(); Console.Write(Child #2: ); Console.Write(Child #2: ); child2.PrintChild()

7、; child2.PrintChild(); Console.Write(Child #3: ); Console.Write(Child #3: ); child3.PrintChild(); child3.PrintChild();7 74.1 4.1 類的組織續(xù)類的組織續(xù) Console.ReadLine(); Console.ReadLine(); 輸出結(jié)果:輸出結(jié)果:Child #1: Zhang San, 11 years old.Child #1: Zhang San, 11 years old.Child #2: Li Si, 10 years old.Child #2: Li

8、 Si, 10 years old.Child #3: none, 0 years old.Child #3: none, 0 years old.8 84.1.2 4.1.2 構(gòu)造函數(shù)構(gòu)造函數(shù) 作用:構(gòu)造函數(shù)是一個特殊的方法,用于在建立對象時作用:構(gòu)造函數(shù)是一個特殊的方法,用于在建立對象時進展初始化的動作。進展初始化的動作。 益處:確保每一個對象在被運用之前都適當?shù)剡M展了初益處:確保每一個對象在被運用之前都適當?shù)剡M展了初始化的動作。始化的動作。 構(gòu)造函數(shù)特點:構(gòu)造函數(shù)特點: 1) 1) 每個類至少有一個構(gòu)造函數(shù)。假設程序代碼中沒有每個類至少有一個構(gòu)造函數(shù)。假設程序代碼中沒有構(gòu)造函數(shù)那么系統(tǒng)會

9、自動提供一個默許的構(gòu)造函數(shù)。構(gòu)造函數(shù)那么系統(tǒng)會自動提供一個默許的構(gòu)造函數(shù)。 2) 2) 一個構(gòu)造函數(shù)總是和它的類名一樣。一個構(gòu)造函數(shù)總是和它的類名一樣。 3) 3) 構(gòu)造函數(shù)不包含任何前往值。構(gòu)造函數(shù)不包含任何前往值。 4) 4) 構(gòu)造函數(shù)總是構(gòu)造函數(shù)總是publicpublic的。的。 普通在構(gòu)造函數(shù)中作初始化任務,對于執(zhí)行過程用時比普通在構(gòu)造函數(shù)中作初始化任務,對于執(zhí)行過程用時比較長的程序代碼,最好不要放在構(gòu)造函數(shù)中。較長的程序代碼,最好不要放在構(gòu)造函數(shù)中。9 94.1.2 4.1.2 構(gòu)造函數(shù)續(xù)構(gòu)造函數(shù)續(xù) 1 1、默許構(gòu)造函數(shù)、默許構(gòu)造函數(shù)1 1假設在類中不定義構(gòu)造函數(shù),系統(tǒng)會提供一個默

10、許的構(gòu)假設在類中不定義構(gòu)造函數(shù),系統(tǒng)會提供一個默許的構(gòu)造函數(shù)。造函數(shù)。2 2默許構(gòu)造函數(shù)沒有參數(shù)。默許構(gòu)造函數(shù)沒有參數(shù)。3 3默許構(gòu)造函數(shù)自動將非靜態(tài)成員初始化為:默許構(gòu)造函數(shù)自動將非靜態(tài)成員初始化為: 數(shù)值型數(shù)值型: :如如intint、doubledouble等,初始化為等,初始化為0 0。 bool bool類型:初始化為類型:初始化為false.false. 援用類型:初始化為援用類型:初始化為nullnull。4 4假設本人定義了類的構(gòu)造函數(shù),那么一切初始化任務由假設本人定義了類的構(gòu)造函數(shù),那么一切初始化任務由編程者本人完成。編程者本人完成。10104.1.2 4.1.2 構(gòu)造函數(shù)續(xù)

11、構(gòu)造函數(shù)續(xù)2. 2. 重載構(gòu)造函數(shù)重載構(gòu)造函數(shù) 有時候能夠會遇到這樣的情況:在一個類中有時候能夠會遇到這樣的情況:在一個類中的多個方法中都要用到某一個數(shù)據(jù)成員,而該成的多個方法中都要用到某一個數(shù)據(jù)成員,而該成員值必需從其他類中傳送過來。這時,無參數(shù)的員值必需從其他類中傳送過來。這時,無參數(shù)的構(gòu)造函數(shù)就不能勝任了,處理這個問題最好的方構(gòu)造函數(shù)就不能勝任了,處理這個問題最好的方法就是:重載法就是:重載OverloadingOverloading構(gòu)造函數(shù)。構(gòu)造函數(shù)。11114.1.2 4.1.2 構(gòu)造函數(shù)續(xù)構(gòu)造函數(shù)續(xù)using System;using System;using System.Col

12、lections.Generic;using System.Collections.Generic;using System.Text;using System.Text;namespace OverloadingExamplenamespace OverloadingExample class Program class Program public Program() public Program() Console.WriteLine(null); Console.WriteLine(null); 12124.1.2 4.1.2 構(gòu)造函數(shù)續(xù)構(gòu)造函數(shù)續(xù) public Program(str

13、ing str) public Program(string str) Console.WriteLine(str); Console.WriteLine(str); static void Main() static void Main() Program aa = new Program(); Program aa = new Program(); Program bb = new Program(How are you!); Program bb = new Program(How are you!); Console.ReadLine(); Console.ReadLine(); 13

14、134.1.3 4.1.3 字段和部分變量字段和部分變量u字段字段: :指聲明為類一級的對象或值類型的變量。指聲明為類一級的對象或值類型的變量。 u部分變量部分變量: :指在方法、事件以及構(gòu)造函數(shù)內(nèi)聲明的變量。指在方法、事件以及構(gòu)造函數(shù)內(nèi)聲明的變量。 upublic class Programpublic class Programu u public static int j=20; / public static int j=20; /字段字段u public static void Main() public static void Main()u u int j=30; / int j

15、=30; /部分變量部分變量u Console.WriteLine(j); / Console.WriteLine(j); /輸出結(jié)果:輸出結(jié)果:3030u Console.WriteLine(Program.j); / Console.WriteLine(Program.j); /輸出結(jié)輸出結(jié)果:果:2020u Console.ReadLine(); Console.ReadLine();u u 14144.1.3 4.1.3 字段和部分變量字段和部分變量 當字段和部分變量名一樣時,假設要援用靜態(tài)字段,可當字段和部分變量名一樣時,假設要援用靜態(tài)字段,可以運用下面的方式:以運用下面的方式: 類

16、名類名. .字段名字段名 假設是實例字段,那么運用下面的方式:假設是實例字段,那么運用下面的方式: this. this.字段名字段名 這里的這里的thisthis指當前實例。指當前實例。 當然,假設沒有出現(xiàn)字段和部分變量名重名的情況,援用當然,假設沒有出現(xiàn)字段和部分變量名重名的情況,援用字段的方式和援用部分變量的方式一樣。字段的方式和援用部分變量的方式一樣。15154.1.4 4.1.4 靜態(tài)成員與實例成員靜態(tài)成員與實例成員類的成員包括字段、屬性、構(gòu)造函數(shù)、方法、事件、索引、嵌類的成員包括字段、屬性、構(gòu)造函數(shù)、方法、事件、索引、嵌套類。套類。類的成員分靜態(tài)成員和實例成員類的成員分靜態(tài)成員和實

17、例成員靜態(tài)成員在內(nèi)存中只需一份靜態(tài)成員在內(nèi)存中只需一份靜態(tài)成員要等到運用程序終了時才會退出內(nèi)存。靜態(tài)成員要等到運用程序終了時才會退出內(nèi)存。把只需創(chuàng)建了類的實例才可以運用的成員叫實例成員。把只需創(chuàng)建了類的實例才可以運用的成員叫實例成員。 16164.1.5 4.1.5 訪問修飾符訪問修飾符C#C#中有以下成員訪問修飾符:中有以下成員訪問修飾符:Public Public 常用任何外部的類都可以不受限制的存取這個類常用任何外部的類都可以不受限制的存取這個類的方法和數(shù)據(jù)成員。的方法和數(shù)據(jù)成員。private private 常用類中的一切方法和數(shù)據(jù)成員只能在此類中運常用類中的一切方法和數(shù)據(jù)成員只能在

18、此類中運用,外部無法存取。用,外部無法存取。( (默許默許) )Protected Protected 除了讓本身的類可以運用之外,任何承繼自此類的除了讓本身的類可以運用之外,任何承繼自此類的子類都可以存取。子類都可以存取。Internal Internal 在當前工程中都可以存取。該訪問權(quán)限普通用于基在當前工程中都可以存取。該訪問權(quán)限普通用于基于組件的開發(fā),由于它可以使組件以私有方式任務,而該工于組件的開發(fā),由于它可以使組件以私有方式任務,而該工程外的其它代碼無法訪問。程外的其它代碼無法訪問。Protected internal Protected internal 只限于當前工程,或者從該

19、工程的類承只限于當前工程,或者從該工程的類承繼的類才可以存取。繼的類才可以存取。 Partial Partial 部分類型,類的定義和實現(xiàn)可以分布在多個文件中,部分類型,類的定義和實現(xiàn)可以分布在多個文件中,但都要運用但都要運用partialpartial標注,基類只需求聲明一次,假設多次標注,基類只需求聲明一次,假設多次聲明那么必需完全一致。聲明那么必需完全一致。17174.2 4.2 構(gòu)造構(gòu)造 構(gòu)造構(gòu)造structstruct是由一系列相關(guān)的、但類型不一定一樣的變是由一系列相關(guān)的、但類型不一定一樣的變量組織在一同而構(gòu)成的數(shù)據(jù)表示方式,一切構(gòu)造類型都隱式量組織在一同而構(gòu)成的數(shù)據(jù)表示方式,一切構(gòu)

20、造類型都隱式地從類型地從類型objectobject承繼。承繼。 例如:例如:public struct Pointpublic struct Point public int x; public int x; public int y; public int y; 構(gòu)造和類的區(qū)別與聯(lián)絡:構(gòu)造和類的區(qū)別與聯(lián)絡: 構(gòu)造類型是值類型,類類型是援用類型。構(gòu)造類型是值類型,類類型是援用類型。 凡是定義為構(gòu)造的,都可以用類來定義。凡是定義為構(gòu)造的,都可以用類來定義。 創(chuàng)建輕量級對象時,可以運用構(gòu)造。創(chuàng)建輕量級對象時,可以運用構(gòu)造。18184.3 4.3 方法方法 方法方法MethodMethod是一組程

21、序代碼的集合,每個方法都有一是一組程序代碼的集合,每個方法都有一個方法名,便于識別和讓其他方法調(diào)用。個方法名,便于識別和讓其他方法調(diào)用。1. 1. 方法的定義與運用方法的定義與運用 1 1方法必需放在某個類中。方法必需放在某個類中。 2 2定義方法的語法方式為:定義方法的語法方式為: 訪問修飾符訪問修飾符 前往值類型前往值類型 方法稱號參數(shù)序列方法稱號參數(shù)序列 語句序列語句序列 19194.3 4.3 方法續(xù)方法續(xù)定義方法時,需求留意以下幾點:定義方法時,需求留意以下幾點:方法名不能和變量、常數(shù)或者任何聲明在類中其它的成員一樣。方法名不能和變量、常數(shù)或者任何聲明在類中其它的成員一樣。方法可以有

22、參數(shù),也可以沒有參數(shù),但是不論能否有參數(shù),小方法可以有參數(shù),也可以沒有參數(shù),但是不論能否有參數(shù),小括號都是必需的。假設參數(shù)序列中的參數(shù)有多個,那么以逗括號都是必需的。假設參數(shù)序列中的參數(shù)有多個,那么以逗號分開。號分開。終了某個方法的執(zhí)行,可以運用終了某個方法的執(zhí)行,可以運用returnreturn語句,程序遇到語句,程序遇到returnreturn語句后,會將執(zhí)行流程交還給調(diào)用此方法的程序代碼段。此語句后,會將執(zhí)行流程交還給調(diào)用此方法的程序代碼段。此外,還可以用外,還可以用returnreturn語句前往一個值。語句前往一個值。假設聲明一個非假設聲明一個非voidvoid類型的方法,那么方法中

23、必需至少有一個類型的方法,那么方法中必需至少有一個returnreturn語句。語句。20204.3 4.3 方法續(xù)方法續(xù)using System;using System;class Programclass Program public int MyMethod() public int MyMethod() Console.WriteLine(this is MyMethod.); Console.WriteLine(this is MyMethod.); int i = 10; int i = 10; return i; return i; static void Main() sta

24、tic void Main() Program method = new Program(); Program method = new Program(); int j = 5; int j = 5; j = method.MyMethod(); j = method.MyMethod(); Console.WriteLine(the value is 0., j); Console.WriteLine(the value is 0., j); 21214.3 4.3 方法方法2. 2. 方法中的參數(shù)傳送方法中的參數(shù)傳送1) 1) 傳送值類型的參數(shù)傳送值類型的參數(shù) 值類型參數(shù)的格式為:值類型

25、參數(shù)的格式為: 參數(shù)類型參數(shù)類型 參數(shù)名參數(shù)名class Programclass Program public static void AddOne(int a)a+; public static void AddOne(int a)a+; static void Main() static void Main() int a = 3; int a = 3; Console.WriteLine( Console.WriteLine(調(diào)用調(diào)用AddOneAddOne之前,之前,a=0, a);a=0, a); AddOne(a); AddOne(a); Console.WriteLine( C

26、onsole.WriteLine(調(diào)用調(diào)用AddOneAddOne之后,之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 22224.3 4.3 方法續(xù)方法續(xù)2) 2) 傳送援用類型的參數(shù)傳送援用類型的參數(shù)援用類型參數(shù)的格式為:援用類型參數(shù)的格式為: ref ref 參數(shù)類型參數(shù)類型 參數(shù)參數(shù)class Programclass Program public static void AddOne(ref int a)a+; public static void AddOne(ref int a)a+; static void

27、 Main() static void Main() int a = 3; int a = 3; Console.WriteLine( Console.WriteLine(調(diào)用調(diào)用AddOneAddOne之前,之前,a=0, a);a=0, a); AddOne(ref a); AddOne(ref a); Console.WriteLine( Console.WriteLine(調(diào)用調(diào)用AddOneAddOne之后,之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 23234.3 4.3 方法續(xù)方法續(xù) 3) 3) 輸出多個

28、援用類型的參數(shù)輸出多個援用類型的參數(shù) 輸出援用類型參數(shù)的格式為:輸出援用類型參數(shù)的格式為: out out 參數(shù)類型參數(shù)類型 參數(shù)名參數(shù)名class Programclass Program public static void MyMethod(out int a, out int b) public static void MyMethod(out int a, out int b) a = 5; a = 5; b = 6; b = 6; static void Main() static void Main() int x, y; int x, y; MyMethod(out x, ou

29、t y); MyMethod(out x, out y); Console.WriteLine( Console.WriteLine(調(diào)用調(diào)用MyMethodMyMethod之后,之后,x=0,y=1, x, y);x=0,y=1, x, y); Console.ReadLine(); Console.ReadLine(); 24244.3 4.3 方法續(xù)方法續(xù) 4) 4) 傳送個數(shù)不確定的參數(shù)傳送個數(shù)不確定的參數(shù) 需求傳送的參數(shù)個數(shù)不確定時,可以采用需求傳送的參數(shù)個數(shù)不確定時,可以采用paramsparams關(guān)鍵字,其后普通跟一關(guān)鍵字,其后普通跟一個數(shù)組。個數(shù)組。class Programc

30、lass Program public static float Average(params long v) public static float Average(params long v) long total, i; long total, i; for (i = 0, total = 0; i v.Length; +i) for (i = 0, total = 0; i v.Length; +i) total += vi; total += vi; return (float)total / v.Length; return (float)total / v.Length; 25254.3 4.3 方法續(xù)方法續(xù)static void Main()static void Main() float x = Average(1, 2, 3, 5); float x = Average(1, 2, 3, 5); Console.W

溫馨提示

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

最新文檔

評論

0/150

提交評論