




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 異常處理異常處理 2. try-catch-finally結(jié)構(gòu)結(jié)構(gòu) 3. C#面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) 4. 繼承繼承5. 類的訪問修飾符類的訪問修飾符 6. this static 關(guān)鍵字關(guān)鍵字 7. 多態(tài)多態(tài)(Polymorphism) 和虛方法和虛方法 C#的異??赡苡蓛煞N方式導致:的異??赡苡蓛煞N方式導致:異常由異常由try語句來處理,語句來處理,try語句提供了一種機制來捕捉語句提供了一種機制來捕捉執(zhí)行過程中發(fā)生的異常。執(zhí)行過程中發(fā)生的異常。Try語句有語句有3種基本格式:種基本格式:案例名稱:使用案例名稱:使用try-catch語句語句程序名稱:程序名稱:2-21
2、.csusing System;class Sample public static void Main(string args) long factorial=1; long num=Int64.Parse(args0); try checked / 計算數(shù)計算數(shù)num的階乘的階乘 for (long cur=1;cur=num;cur+) factorial*=cur; catch (OverflowException oe) Console.WriteLine(計算計算0的階乘時引發(fā)溢出異常的階乘時引發(fā)溢出異常,num); Console.WriteLine(0,oe.Message);
3、 return; Console.WriteLine(0的階乘是的階乘是1,num,factorial); 案例名稱:使用案例名稱:使用try-finally語句語句程序名稱:程序名稱:2-22.csusing System;public class Sample public static void Main() try Console.WriteLine(執(zhí)行執(zhí)行try子句子句!); goto leave; / 跳轉(zhuǎn)到跳轉(zhuǎn)到leave標簽標簽 finally Console.WriteLine(執(zhí)行執(zhí)行finally子句子句!); leave: Console.WriteLine(執(zhí)行執(zhí)行
4、leave標簽標簽!); 案例名稱:使用案例名稱:使用try-catch-finally語句語句程序名稱:程序名稱:2-23.csusing System;class Sample public static void Main() try throw(new ArgumentNullException(); / 引發(fā)引發(fā)異常異常 catch(ArgumentNullException e) Console.WriteLine(Exception:0,e.Message); finally Console.WriteLine(執(zhí)行執(zhí)行finally子句子句); 與傳統(tǒng)的面向過程的編程方法相比,
5、與傳統(tǒng)的面向過程的編程方法相比,面向?qū)ο缶幊谭椒ㄓ忻嫦驅(qū)ο缶幊谭椒ㄓ?個優(yōu)點:個優(yōu)點:classAclassBvoidf()Aa=newA();為了提高軟件模塊的可重用性和可擴充性,以便提高軟為了提高軟件模塊的可重用性和可擴充性,以便提高軟件的開發(fā)效率,希望能夠利用前人或自己以前的開發(fā)成件的開發(fā)效率,希望能夠利用前人或自己以前的開發(fā)成果,任何面向?qū)ο蟮某绦蛟O(shè)計語言都能夠提供兩個重要果,任何面向?qū)ο蟮某绦蛟O(shè)計語言都能夠提供兩個重要的特性:的特性:案例名稱:使用繼承案例名稱:使用繼承程序名稱:程序名稱:2-24.csusing System;class BaseA public void Func
6、A() System.Console.WriteLine( Funciton A ); class DerivedA : BaseA public void FuncB() System.Console.WriteLine( Function B ); class Tester public static void Main( string args ) DerivedA aDerived = new DerivedA(); aDerived.FuncA(); aDerived.FuncB(); 案例名稱:類的訪問修飾符案例名稱:類的訪問修飾符程序名稱:程序名稱:2-25.csusing Sy
7、stem;class Class1 public string s; / 公有成員公有成員 protected int i; / 保護成員保護成員 private double d; / 私有成員私有成員 public void F1() s=Welcome six!; / 正確,允許訪問自身成員正確,允許訪問自身成員 i=100; / 正確,允許訪問自身成員正確,允許訪問自身成員 d=18.68; / 正確,允許訪問自身成員正確,允許訪問自身成員構(gòu)造函數(shù)用于執(zhí)行類的實例的初始化。每個類都構(gòu)造函數(shù)用于執(zhí)行類的實例的初始化。每個類都有構(gòu)造函數(shù),即使沒有聲明它,編譯器也會自動有構(gòu)造函數(shù),即使沒有聲
8、明它,編譯器也會自動提供一個默認的構(gòu)造函數(shù)。在訪問一個類的時候,提供一個默認的構(gòu)造函數(shù)。在訪問一個類的時候,系統(tǒng)將最先執(zhí)行構(gòu)造函數(shù)中的語句。使用構(gòu)造函系統(tǒng)將最先執(zhí)行構(gòu)造函數(shù)中的語句。使用構(gòu)造函數(shù)請注意以下幾個問題:數(shù)請注意以下幾個問題:案例名稱:構(gòu)造函數(shù)和析構(gòu)函數(shù)案例名稱:構(gòu)造函數(shù)和析構(gòu)函數(shù)程序名稱:程序名稱:2-26.csusing System;class Desk/構(gòu)造函數(shù)和類名一樣,析構(gòu)函數(shù)前面加構(gòu)造函數(shù)和類名一樣,析構(gòu)函數(shù)前面加 public Desk()Console.WriteLine(Constructing Desk);weight=6;high=3;width=7;leng
9、th=10;Console.WriteLine(0,1,2,3,weight,high,width,length);Desk()Console.WriteLine(Destructing Desk );protected int weight;protected int high;protected int width;protected int length;public static void Main()Desk aa=new Desk();Console.WriteLine(back in main() ); ;案例名稱:使用案例名稱:使用this關(guān)鍵字關(guān)鍵字程序名稱:程序名稱:2-2
10、7.csusing System;public class Employee public string name; / 員工姓名員工姓名 public decimal salary; / 員工薪水員工薪水 / 構(gòu)造函數(shù)構(gòu)造函數(shù) public Employee(string name, decimal salary) / 用用this關(guān)鍵字給正在構(gòu)造的對象的關(guān)鍵字給正在構(gòu)造的對象的name和和salary賦值賦值 = name; this.salary = salary; / 顯示員工姓名及薪水顯示員工姓名及薪水 public void DiaplayEmployee()
11、Console.WriteLine(姓名姓名:0,name); Console.WriteLine(薪水薪水:0元元,salary); / 用用this方法將當前對象傳給方法將當前對象傳給Tax.CalcTax()方法方法 Console.WriteLine(個人所得稅個人所得稅:0元元,Tax.CalcTax(this); public class Tax public static decimal CalcTax(Employee E) return (0.14m*(E.salary-800.0m); public class Sample public static void Main(
12、) / 聲明類聲明類Employee的實例的實例e Employee e = new Employee(小劉小劉,4123.6m); e.DiaplayEmployee(); / 顯示員工姓名和薪水顯示員工姓名和薪水 案例名稱:使用案例名稱:使用static關(guān)鍵字關(guān)鍵字程序名稱:程序名稱:2-28.cs using System;public class Person private int id;public static int total = 0;public Person() total+; id = total;public class OtherClass public stati
13、c void Main() Person.total = 100;Console.WriteLine (Person.total);Person c = new Person();Console.WriteLine (Person.total);案例名稱:使用靜態(tài)方法案例名稱:使用靜態(tài)方法程序名稱:程序名稱:2-29.cs using System;public class Person private int id;private static int total = 0;public static int getTotalPerson() return total;public Perso
14、n() total+;id = total;public class TestPerson public static void Main() Console.WriteLine (Person.getTotalPerson();Person p1 = new Person();Console.WriteLine (Person.getTotalPerson();和其他的面向?qū)ο笳Z言一樣,和其他的面向?qū)ο笳Z言一樣,C#支持多態(tài)、虛方法、函支持多態(tài)、虛方法、函數(shù)的重載等。數(shù)的重載等。除此之外,除此之外,C#還提供一種特殊的數(shù)據(jù)形態(tài)還提供一種特殊的數(shù)據(jù)形態(tài)“裝箱裝箱” 在在C#中,多態(tài)性的定義是:
15、中,多態(tài)性的定義是:“同一操作作用于不同的類同一操作作用于不同的類的實例,不同的類將進行不同的解釋,最后產(chǎn)生不同的的實例,不同的類將進行不同的解釋,最后產(chǎn)生不同的執(zhí)行結(jié)果執(zhí)行結(jié)果”。C#支持兩種類型的多態(tài)性。支持兩種類型的多態(tài)性。編譯時的多態(tài)性:編譯時的多態(tài)是通過重載來實現(xiàn)的。編譯時的多態(tài)性:編譯時的多態(tài)是通過重載來實現(xiàn)的。對于非虛的成員來說,系統(tǒng)在編譯時,根據(jù)傳遞的參數(shù)、對于非虛的成員來說,系統(tǒng)在編譯時,根據(jù)傳遞的參數(shù)、返回的類型等信息決定實現(xiàn)何種操作。返回的類型等信息決定實現(xiàn)何種操作。運行時的多態(tài)性:運行時的多態(tài)性是直到系統(tǒng)運行時,運行時的多態(tài)性:運行時的多態(tài)性是直到系統(tǒng)運行時,才根據(jù)實際
16、情況決定實現(xiàn)何種操作。才根據(jù)實際情況決定實現(xiàn)何種操作。C#中,運行時的多中,運行時的多態(tài)性通過虛方法實現(xiàn)。態(tài)性通過虛方法實現(xiàn)。編譯時的多態(tài)性提供了運行速度快的特點,而運行時的編譯時的多態(tài)性提供了運行速度快的特點,而運行時的多態(tài)性則帶來了高度靈活和抽象的特點。多態(tài)性則帶來了高度靈活和抽象的特點。案例名稱:使用虛方法案例名稱:使用虛方法程序名稱:程序名稱:2-30.cs using System;class Teststatic void Main(string args)Base b = new Base();b.Draw();Derived d = new Derived();d.Draw()
17、;d.Fill();Base obj = new Derived();obj.Fill();obj.Draw();class Basepublic void Fill()System.Console.WriteLine(Base.Fill);public virtual void Draw() System.Console.WriteLine(Base.Draw);class Derived : Basepublic override void Draw()System.Console.WriteLine(Derived.Draw);public new void Fill() System.
18、Console.WriteLine(Derived.Fill);案例名稱:重載普通函數(shù)案例名稱:重載普通函數(shù)程序名稱:程序名稱:2-32.csusing System;class Overload public void Func() System.Console.WriteLine( Func() ); public void Func( int x, int y ) System.Console.WriteLine( Func( int x, int y ) ); public void Func( long x, long y ) System.Console.WriteLine( Fu
19、nc( long x, long y ) ); public static void Main( string args ) Overload myOverload = new Overload(); myOverload.Func(); myOverload.Func(1,1); myOverload.Func(1L, 1L); / 會調(diào)用哪個重載函數(shù)呢?會調(diào)用哪個重載函數(shù)呢? myOverload.Func(1L,1); 案例名稱:重載構(gòu)造函數(shù)案例名稱:重載構(gòu)造函數(shù)程序名稱:程序名稱:2-33.csusing System;class CtorOverloadDemo static voi
20、d Main(String args) MyInt i = new MyInt(2); System.Console.WriteLine(i.i); MyInt j = new MyInt(); System.Console.WriteLine(j.i); class MyInt public int i; public MyInt() i = 0; public MyInt( int i ) this.i = i; 案例名稱:使用裝箱案例名稱:使用裝箱程序名稱:程序名稱:2-34.csusing System;public class UnboxingTest public static v
21、oid Main( ) int i = 123; /裝箱裝箱 object o = i; / 拆箱,必須是顯示轉(zhuǎn)換拆箱,必須是顯示轉(zhuǎn)換 int j = (int) o; Console.WriteLine(j: 0, j); 字符串輸出字符串輸出把數(shù)據(jù)轉(zhuǎn)化成字符串以作為輸出實際上是很簡單把數(shù)據(jù)轉(zhuǎn)化成字符串以作為輸出實際上是很簡單的。數(shù)值類型轉(zhuǎn)換為字符串可以用的。數(shù)值類型轉(zhuǎn)換為字符串可以用函數(shù)函數(shù)功能功能Convert.ToBoolean()轉(zhuǎn)換成為轉(zhuǎn)換成為bool型,字符串型,字符串必須為必須為true或者或者falseConvert.ToChar()轉(zhuǎn)換成為轉(zhuǎn)換成為char型型Convert.ToDateTime()轉(zhuǎn)換成為日期型轉(zhuǎn)換成為日期型Convert.ToDecimal()轉(zhuǎn)換成為轉(zhuǎn)換成為Decimal型型Convert.ToInt32()轉(zhuǎn)換成為轉(zhuǎn)換成為int型型案例名稱
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)教育中心委托管理及課程設(shè)置調(diào)整協(xié)議
- 共同承擔賠償協(xié)議書
- 金融權(quán)益授權(quán)協(xié)議書
- 附帶民事賠償協(xié)議書
- 餐飲異地投資協(xié)議書
- 餐飲檔口聯(lián)營協(xié)議書
- 護理工作院感防控體系構(gòu)建
- 酒店裝飾裝修協(xié)議書
- 重慶售房合同協(xié)議書
- 銷售目標考核協(xié)議書
- 2025-2030中國公募證券投資基金行業(yè)市場深度分析及發(fā)展趨勢與前景預測研究報告
- 脛腓骨遠端骨折護理查房
- 消毒供應中心手工清洗操作流程
- 發(fā)電量管理考核辦法
- 文體部面試題及答案
- 山東省濟南市2025年3月高三模擬考試化學試題及答案
- 骨科常用藥物相關(guān)知識
- 2022級中餐烹飪(烹飪工藝與營養(yǎng)) 專業(yè)校企合作人才培養(yǎng)方案(五年制)
- 2025年音樂節(jié)演唱會明星藝人歌手樂隊演出場費價格表
- 青年紅色筑夢之旅創(chuàng)業(yè)計劃
- 2025年人工智能工程師專業(yè)知識考核試卷:人工智能在語音識別中的應用試題
評論
0/150
提交評論