程序設(shè)計(jì)基礎(chǔ)教程_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)教程_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)教程_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)教程_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)教程_第5頁(yè)
已閱讀5頁(yè),還剩407頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.C# 課件課件第一章第一章第二章第二章第三章第三章第四章第四章第五章第五章第六章第六章第七章第七章第八章第八章第九章第九章第十章第十章ACCP 4.0補(bǔ)充補(bǔ)充.NET 平臺(tái)以及Visual Studio.NET IDE簡(jiǎn)介 第一章第一章.目標(biāo) 討論計(jì)算、Internet 和應(yīng)用程序開(kāi)發(fā)的轉(zhuǎn)變 了解對(duì) .NET 的需求 解釋 CLR 和 IL 的角色 Visual Studio.NET IDE簡(jiǎn)介.集中式計(jì)算啞終端主機(jī)集中式計(jì)算.客戶端/服務(wù)器計(jì)算客戶端 - 服務(wù)器計(jì)算客戶端:智能終端服務(wù)器PC數(shù)據(jù)大的話網(wǎng)絡(luò)就不好了.分布式計(jì)算2-1分布式計(jì)算智能終端網(wǎng)絡(luò)網(wǎng)絡(luò)在本地分布式計(jì)算中,計(jì)算機(jī)通常位于

2、 LAN 中.分布式計(jì)算 2-2網(wǎng)絡(luò)網(wǎng)絡(luò).計(jì)算方案的轉(zhuǎn)變集中計(jì)算客戶端 - 服務(wù)器計(jì)算分布式計(jì)算Internet.當(dāng)前的 InternetWeb 服務(wù)器InternetWeb 服務(wù)器Web 服務(wù)器今天的今天的 Web 站點(diǎn)是獨(dú)立的孤島站點(diǎn)是獨(dú)立的孤島 Web 提供數(shù)據(jù)的提供數(shù)據(jù)的 HTML“圖片圖片”,而不是實(shí)際的數(shù)據(jù)而不是實(shí)際的數(shù)據(jù) 瀏覽器:變相的只讀啞終端瀏覽器:變相的只讀啞終端 結(jié)構(gòu)與舊的分時(shí)模型相同結(jié)構(gòu)與舊的分時(shí)模型相同 要進(jìn)行個(gè)性化,需要在每個(gè)站點(diǎn)輸要進(jìn)行個(gè)性化,需要在每個(gè)站點(diǎn)輸入相同的個(gè)人信息入相同的個(gè)人信息!.目前存在的難題家庭辦公室聯(lián)機(jī)信息其他信息脫機(jī)信息電子郵件需要個(gè)人個(gè)人信

3、息空間信息空間用戶用戶開(kāi)發(fā)人員開(kāi)發(fā)人員 生成、測(cè)試和部署站點(diǎn)的工具不足重用不好(c+寫的vb再用) 站點(diǎn)通常較吸引人,但沒(méi)什么用處需要?jiǎng)?chuàng)建應(yīng)用程序并將其布署到多臺(tái)設(shè)備的工具.Internet 的轉(zhuǎn)變Web 服務(wù)器Web 服務(wù)器Web 服務(wù)器Web 服務(wù)器Web 服務(wù)器Web 服務(wù)器組合體組合體作為孤島的作為孤島的 Web 站點(diǎn)站點(diǎn)站點(diǎn)、服務(wù)和設(shè)備彼此協(xié)作,共同提供豐富的用戶體驗(yàn)。.應(yīng)用程序開(kāi)發(fā)的演變Internet任何人在任何位置都可以使用應(yīng)用程序軟件作為服務(wù)提供資源豐富,基于應(yīng)用程序資源豐富,基于應(yīng)用程序來(lái)控制來(lái)控制 應(yīng)用程序集成在本地系統(tǒng)服務(wù)中推向市場(chǎng)時(shí)間短更高的開(kāi)發(fā)效率更高質(zhì)量軟件 應(yīng)用

4、程序和網(wǎng)絡(luò)上所有應(yīng)用程序集成在一起,從而創(chuàng)造獨(dú)特的價(jià)值 因此,可以將焦點(diǎn)集中在創(chuàng)建獨(dú)特的商業(yè)價(jià)值,不必關(guān)注建造基礎(chǔ)設(shè)施 應(yīng)用程序(Web 服務(wù))在Internet/Intranet 中公開(kāi)其程序特點(diǎn) 開(kāi)發(fā)者通過(guò)調(diào)用 Web API 將 Web 服務(wù)集成到應(yīng)用程序中 Web 上的組件編程!.NET - 演變的結(jié)果2-1融合計(jì)算和通訊形成組合體,不再是孤島!分布式計(jì)算-本地進(jìn)行軟件成為服務(wù)應(yīng)用程序可由任何人在任何地方使用.NET -演變的結(jié)果 2-2融合計(jì)算和通訊形成組合體,而不是孤島!分布式計(jì)算本地進(jìn)行軟件成為服務(wù)應(yīng)用程序可以由任何人在任何地方使用.NET - 將 DC(個(gè)人計(jì)算) 向前推進(jìn)了一

5、步2-1其他其他.NET 設(shè)備設(shè)備個(gè)人個(gè)人信息空間信息空間.用戶數(shù)據(jù)存放在網(wǎng)絡(luò)上 - 可以隨時(shí)隨地進(jìn)行訪問(wèn)可以從任何 .NET 設(shè)備訪問(wèn)數(shù)據(jù)創(chuàng)建可以通過(guò)任何瀏覽器、任何設(shè)備訪問(wèn)的應(yīng)用程序.NET 應(yīng)用程序利用了 Internet 的功能.NET - 以 Internet 為中心的一種全新的平臺(tái).NET - 將 DC 向前推進(jìn)了一步2-2.NET 所支持的語(yǔ)言C#VB.NETEiffelCOBOLSmallTalkADAPythonJScript.NETVC+.代碼代碼被執(zhí)行被執(zhí)行C+VB編譯器編譯器編譯器編譯器可執(zhí)行可執(zhí)行代碼代碼可執(zhí)行可執(zhí)行代碼代碼RUNTIMERUNTIME語(yǔ)言特定的編譯器

6、和運(yùn)行庫(kù).代碼代碼被執(zhí)行被執(zhí)行C#VB.net編譯器編譯器編譯器編譯器可執(zhí)行可執(zhí)行代碼代碼可執(zhí)行可執(zhí)行代碼代碼RUNTIMERUNTIMEIL+元數(shù)據(jù)CLRIL 和 CLR 的使用Common Language Runtime.執(zhí)行 .NET 程序MSIL+元數(shù)據(jù)機(jī)器代碼代碼被執(zhí)行CLR第一次編譯第一次編譯第二次編譯第二次編譯.NET 程序被編譯兩次,第一次編譯很慢,而第二次編譯較快!語(yǔ)言語(yǔ)言編譯器編譯器.NET 源代碼.Microsoft 中間語(yǔ)言MSIL+元數(shù)據(jù)機(jī)器代碼代碼 被執(zhí)行CLRMSIL幫助語(yǔ)言實(shí)現(xiàn)互操作IL 不是字節(jié)代碼,但很接近字節(jié)代碼。因此,執(zhí)行應(yīng)用程序時(shí),IL 到機(jī)器碼的轉(zhuǎn)

7、換速度非常快!通過(guò) CLR將 MSIL 轉(zhuǎn)換為具體 CPU 的代碼CPU 無(wú)關(guān) 的指令集語(yǔ)言語(yǔ)言編譯器編譯器.NET 源代碼.公共語(yǔ)言運(yùn)行庫(kù)CLR.NET 源代碼MSIL+元數(shù)據(jù)機(jī)器代碼代碼被執(zhí)行管理內(nèi)存易于設(shè)計(jì)組件和應(yīng)用程序,其對(duì)象可以跨語(yǔ)言互動(dòng)跨語(yǔ)言集成(特別是跨語(yǔ)言繼承)一次編譯,就可運(yùn)行在支持運(yùn)行庫(kù)的任何 CPU 和操作系統(tǒng)上語(yǔ)言語(yǔ)言編譯器編譯器.VS.NET IDE幫助系統(tǒng)演示.VS.NET IDE設(shè)計(jì)器演示.VS.NET IDE窗口管理演示.總結(jié) .NET 是以 Internet 為中心的一種全新的平臺(tái) 通過(guò) .NET,可以將用戶數(shù)據(jù)存放在網(wǎng)絡(luò)上,并且隨時(shí)隨地通過(guò)與 .NET 兼容

8、的任何設(shè)備訪問(wèn)這些數(shù)據(jù) NET 獨(dú)一無(wú)二的特征是可以提供多語(yǔ)言支持 以 .NET 語(yǔ)言編寫的源代碼將被編譯兩次,第一次由語(yǔ)言特定的編譯器從源代碼編譯為 IL,第二次從 IL 編譯為機(jī)器碼.Microsoft.NET 平臺(tái)組件 第二章.回顧 .NET 是以 Internet 為中心的一種全新平臺(tái) 通過(guò) .NET,可以將用戶數(shù)據(jù)存放到網(wǎng)絡(luò)上,隨時(shí)隨地通過(guò)與 .NET 兼容的任何設(shè)備訪問(wèn)該數(shù)據(jù) .NET 獨(dú)一無(wú)二的特征是提供多語(yǔ)言支持 以 .NET 語(yǔ)言編寫的源代碼被編譯兩次,一次由語(yǔ)言特定的編譯器從源代碼編譯成 IL,第二次從 IL 編譯成機(jī)器碼.目標(biāo) 描述 Microsoft.NET 的核心組件

9、 討論 .NET 框架并列出其組件 談?wù)?NET優(yōu)點(diǎn).Microsoft.NET 的組件MS.NET產(chǎn)品和服務(wù)產(chǎn)品和服務(wù)第三方第三方 .NET 服務(wù)服務(wù)MS.NET平臺(tái)平臺(tái)VS.NETMSN.NETOffice.NETbCentral serverfor .NETWindows.NET.Net 基礎(chǔ)結(jié)構(gòu)基礎(chǔ)結(jié)構(gòu)和工具和工具.Net 用戶體驗(yàn)用戶體驗(yàn).NET 生成生成塊服務(wù)塊服務(wù).NET 設(shè)備軟件設(shè)備軟件一些有機(jī)會(huì)生產(chǎn)構(gòu)建在一些有機(jī)會(huì)生產(chǎn)構(gòu)建在 .NET 平平臺(tái)上的服務(wù)的合作伙伴和開(kāi)發(fā)人臺(tái)上的服務(wù)的合作伙伴和開(kāi)發(fā)人員員.Microsoft.Net 平臺(tái)的功能Internet協(xié)議協(xié)議XMLInte

10、rnet協(xié)議XMLMicrosoft.NET構(gòu)建在 XML 和 Internet 協(xié)議的基礎(chǔ)之上用于開(kāi)發(fā)新 一代軟件的一套工具和服務(wù)集旨在使對(duì) Internet 上的任何資源組進(jìn)行集成/編排成為可能可以更快更容易地設(shè)計(jì)、實(shí)現(xiàn)和部署協(xié)作式 Web 解決方案.XMLInternet協(xié)議協(xié)議XMLMicrosoft.NET將實(shí)際數(shù)據(jù)與表現(xiàn)形式分開(kāi)構(gòu)建新一代 Internet 的關(guān)鍵;使得能夠?qū)π畔⑦M(jìn)行整理、編程和編輯提供了一種將數(shù)據(jù)發(fā)布到多種設(shè)備的方法使站點(diǎn)能夠進(jìn)行協(xié)作并提供能夠彼此交互的 Web 類型豐富、性能高不用類型轉(zhuǎn)換、穿透防火墻服務(wù)組合體.SOAP 的功能Internet協(xié)議協(xié)議XMLMi

11、crosoft.NETMicrosoft.NET 構(gòu)建在 HTTP 和 SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)等現(xiàn)有協(xié)議上SOAP 是基于 XML/HTTP 的協(xié)議SOAP 允許以獨(dú)立于平臺(tái)的方式訪問(wèn)服務(wù)、對(duì)象和服務(wù)器SOAP 用于在分散的分布式環(huán)境中交換信息.Microsoft.NET 平臺(tái)編排.NET框架框架.NETEnterprise Server.NET 生生成塊服務(wù)成塊服務(wù)Windows CE、Windows ME、Windows 2000 和和 Windows.NET.編排Windows (CE、 ME、 2000 和和.NET).NET框架框架 .NETEnterprise Server.

12、NET 生成生成塊服務(wù)塊服務(wù).NET 平臺(tái)構(gòu)建在 Windows 2000 服務(wù)器系列的可伸縮性、可伸縮性、可靠性、可靠性、安全性安全性和可管理性可管理性基礎(chǔ)之上選擇 Windows 2000 系列.NET框架框架編排.NETEnterprise ServerWindows (CE、 ME、2000 和和 .NET).NET 生成生成塊服務(wù)塊服務(wù)Web服務(wù)服務(wù)WebUI數(shù)據(jù)和數(shù)據(jù)和 XML基類基類公共語(yǔ)言運(yùn)行庫(kù)Microsoft.NET 框架的組件.NETEnterpriseServer編排.NET框架框架Windows (CE、 ME、2000 和和 .NET).NET 生成生成塊服務(wù)塊服務(wù)

13、 通過(guò)服務(wù)器系列可以快速生成和管理一個(gè)集成的、支持 Web 的企業(yè)系統(tǒng) 可伸縮性設(shè)計(jì) 可以與最新的 Internet 和數(shù)據(jù)標(biāo)準(zhǔn)實(shí)現(xiàn)互操作安裝 SQL Server 2000Internet Security & Acceleration (ISA) Server 2000Host Integration ServerExchange 2000 Server & Exchange 2000 Conferencing ServerCommerce Server 2000BizTalk Server 2000Application Server 20007 個(gè)核心個(gè)核心 .NET

14、Enterprise Server.NET Enterprise Server.NET 生成生成塊服務(wù)塊服務(wù)編排.NET框架框架.NETEnterprise ServerWindows(CE、 ME、2000 和和 .NET)由 Microsoft 和其他 ASP (應(yīng)用程序提供)提供的商業(yè) Web 服務(wù)這些服務(wù)可以在其他應(yīng)用程序 / Web 服務(wù)中使用核心.NET 生成塊服務(wù);通知個(gè)性化日歷動(dòng)態(tài)提供.NET 生成塊服務(wù).業(yè)務(wù)進(jìn)程Web 服務(wù)組織 A組織 B 在組織內(nèi)部以及在組織之間 多個(gè)客戶、合作伙伴和服務(wù)提供商場(chǎng)所進(jìn)程和 Web 服務(wù)運(yùn)行在編排.NET框架框架.NETEnterprise

15、Server.NET 生成生成塊服務(wù)塊服務(wù)Windows(CE、 ME、2000 和和 .NET)BizTalk Server 2000 為此編排服務(wù)提供這些工具。業(yè)務(wù)進(jìn)程.NET框架作用 提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境 提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境 提供一個(gè)保證代碼安全執(zhí)行的代碼執(zhí)行環(huán)境 提供一個(gè)可消除腳本環(huán)境或解釋環(huán)境的性能問(wèn)題的代碼執(zhí)行環(huán)境 使開(kāi)發(fā)人員的經(jīng)驗(yàn)在面對(duì)類型大不相同的應(yīng)用程序時(shí)保持一致 按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確?;?.NET Framework 的代碼可與任何其他代碼集成.NET Framework體系結(jié)構(gòu)W i n d o w s公 共 語(yǔ)

16、言 運(yùn) 行 庫(kù)基 類 庫(kù)A D O . N E TA S P . N E T公 共 語(yǔ) 言 規(guī) 范C #Visual Studio.NETV BC + +. . .W i n d o w s 窗 體X M LC O M + 服 務(wù).NET Framework 核心組件 公共語(yǔ)言運(yùn)行庫(kù) .NET Framework 類庫(kù) 基類庫(kù) 擴(kuò)展類庫(kù).Microsoft. NET Framework 的體系結(jié)構(gòu)操作系統(tǒng)公共語(yǔ)言運(yùn)行時(shí) (CLR).Net Framework 類庫(kù) (FCL).NET Framework 的組件基本框架類.Net Framework.Net Framework 類庫(kù)類庫(kù)ASP.

17、NETCLSCLRCTS.公共語(yǔ)言運(yùn)行庫(kù) 公共語(yǔ)言運(yùn)行庫(kù)是建立在操作系統(tǒng)之上 公共語(yǔ)言運(yùn)行庫(kù)作用 管理內(nèi)存 線程執(zhí)行 代碼執(zhí)行 代碼安全驗(yàn)證 編譯以及其他系統(tǒng)服務(wù).托管代碼定義 以運(yùn)行庫(kù)為目標(biāo)的代碼稱為托管代碼 C+分成兩種,一種是托管C+,另外一種是非托管C+ C#是以運(yùn)行庫(kù)為目標(biāo)設(shè)計(jì)的,因此用C#編寫的代碼基本上為托管代碼 不以運(yùn)行庫(kù)為目標(biāo)的代碼稱為非托管代碼 .NET提供了與非托管代碼互操作的服務(wù),比如與COM互操作的Interop服務(wù).NET Framework框架類庫(kù) .NET Framework 類庫(kù)提供一組豐富的接口以及抽象類和具體(非抽象)類 可以按原樣使用這些具體的類,或者在

18、多數(shù)情況下從這些類派生自己的類 若要使用接口的功能,既可以創(chuàng)建實(shí)現(xiàn)接口的類,也可以從某個(gè)實(shí)現(xiàn)接口的 .NET Framework 類中派生類.公共語(yǔ)言規(guī)范(CLS) 公共語(yǔ)言規(guī)范 (CLS)是許多應(yīng)用程序所需的一套基本語(yǔ)言功能 CLS 規(guī)則定義了通用類型系統(tǒng)的子集 CLS 通過(guò)定義一組開(kāi)發(fā)人員可以確信在多種語(yǔ)言中都可用的功能來(lái)增強(qiáng)和確保語(yǔ)言互用性 大多數(shù)由 .NET Framework 類庫(kù)中的類型定義的成員都符合 CLS.使用VS.NET進(jìn)行.NET應(yīng)用開(kāi)發(fā) Windows應(yīng)用程序開(kāi)發(fā) ASP.NET應(yīng)用程序開(kāi)發(fā) 移動(dòng)設(shè)備應(yīng)用程序開(kāi)發(fā) Web Services 構(gòu)建.NET分布式系統(tǒng).NET

19、特點(diǎn)總結(jié)4-1統(tǒng)一的API 傳統(tǒng)的編程模式 VB、VC、Delphi采用不同的編程模式和編程API Windows編程和Web編程采用不同的編程模式 .NET編程模式 將所有的API組織在框架類庫(kù)中,VB.NET,C#,VC.NET可以調(diào)用相同的API實(shí)現(xiàn)相同功能 ASP.NET Web窗體編程模式類似于VB的Web窗體設(shè)計(jì)器.NET特點(diǎn)總結(jié)4-2自動(dòng)內(nèi)存管理 傳統(tǒng)內(nèi)存管理模式 開(kāi)發(fā)者可以操縱內(nèi)存,為內(nèi)存管理提高了靈活性,同時(shí)也降低了安全性、穩(wěn)定性 COM中采用引用計(jì)數(shù)的方法實(shí)現(xiàn)內(nèi)存管理,但是容易出現(xiàn)循環(huán)引用的問(wèn)題 .NET內(nèi)存管理模式 由.NET Framework CLR實(shí)現(xiàn)內(nèi)存分配 由.

20、NET Framework CLR實(shí)現(xiàn)垃圾收集和垃圾回收.NET特點(diǎn)總結(jié)4-3安全類型系統(tǒng) 在.NET框架中不會(huì)有不安全的類型表 不會(huì)產(chǎn)生某一個(gè)類型的指針指向另外一個(gè)類型的情況 不可能有無(wú)初始化的變量,不可能索引超出邊界的數(shù)組等等.NET特點(diǎn)總結(jié)4-4 安全意外處理 零安裝(自我描述) 更好的版本控制 多語(yǔ)言支持 與COM的互操作性 XML Web Service.總結(jié) .NET 是以 Internet 為中心的一種應(yīng)用程序開(kāi)發(fā)平臺(tái)。 此平臺(tái)的主要優(yōu)點(diǎn)在于用戶可以隨時(shí)隨地使用與 .NET 兼容的設(shè)備訪問(wèn)所有重要數(shù)據(jù)。 Microsoft.NET 主要由三個(gè)組件構(gòu)成,即 Microsoft.NE

21、T 產(chǎn)品和服務(wù)、.NET 平臺(tái)本身以及第三方 .NET 服務(wù)。 .NET 平臺(tái)構(gòu)成了獨(dú)立于語(yǔ)言,可以從各種.NET 兼容設(shè)備上運(yùn)行的應(yīng)用程序的基礎(chǔ)。 .NET 平臺(tái)基于兩種核心技術(shù),即 XML 和 Internet 協(xié)議套件。.C# 基礎(chǔ)知識(shí)第三章第三章.回顧 第二章 - - Microsoft .NET 的組件 .NET 是以是以 Internet 為中心的一種應(yīng)用程序開(kāi)發(fā)平臺(tái)為中心的一種應(yīng)用程序開(kāi)發(fā)平臺(tái)。 此平臺(tái)的主要優(yōu)點(diǎn)在于用戶可以隨時(shí)隨地使用與此平臺(tái)的主要優(yōu)點(diǎn)在于用戶可以隨時(shí)隨地使用與 .NET 兼容兼容的設(shè)備訪問(wèn)所有的重要數(shù)據(jù)的設(shè)備訪問(wèn)所有的重要數(shù)據(jù)。 Microsoft.NET 主

22、要由三個(gè)組件組成主要由三個(gè)組件組成,即即 Microsoft.NET 產(chǎn)產(chǎn)品和服務(wù)品和服務(wù)、.NET 平臺(tái)本身以及第三方平臺(tái)本身以及第三方 .NET 服務(wù)服務(wù)。 .NET 平臺(tái)構(gòu)成了獨(dú)立于語(yǔ)言平臺(tái)構(gòu)成了獨(dú)立于語(yǔ)言,可以從各種可以從各種 .NET 兼容設(shè)備兼容設(shè)備上運(yùn)行的應(yīng)用程序的基礎(chǔ)。上運(yùn)行的應(yīng)用程序的基礎(chǔ)。 .NET 平臺(tái)基于兩種核心技術(shù)平臺(tái)基于兩種核心技術(shù),即即 XML 和和 Internet 協(xié)議套協(xié)議套件。件。.目標(biāo) 討論 C# 中的類 討論C#程序中的流程控制 闡釋 C# 中的基本數(shù)據(jù)類型 討論 裝箱和取消裝箱的概念 討論結(jié)構(gòu) 討論枚舉類型 使用C#編寫簡(jiǎn)單程序.Microsoft

23、.NET開(kāi)發(fā) Windows 應(yīng)用程序和 Web 應(yīng)用程序的新平臺(tái)支持超過(guò) 20 種語(yǔ)言為 Windows 編程的可用功能帶來(lái)了變革.C# 簡(jiǎn)介充分利用了 .NET 平臺(tái)C#編譯器是.NET 家族中最高效的編譯器C+ 的最新?lián)Q代產(chǎn)品通過(guò)強(qiáng)制腳本類型檢查,提高了開(kāi)發(fā)人員的工作效率并增強(qiáng)了安全性允許有限制地使用本機(jī)指針.C# 程序流一個(gè)簡(jiǎn)單的 C# 程序 -本程序?qū)@示消息本程序?qū)@示消息: :這是這是HelloWorld程序程序.C# 編程構(gòu)造3-1C# 中的變量以下列方式進(jìn)行聲明: AccessModifier DataType VariablePublicPrivateProtectedin

24、tstringfloat.C#編程構(gòu)造3-2 如果需要使用任何關(guān)鍵字作為變量名稱,必須為該變量名稱添加前綴 本程序的輸出消息本程序的輸出消息: :string是一個(gè)關(guān)鍵字但在本例用作一個(gè)變是一個(gè)關(guān)鍵字但在本例用作一個(gè)變量名量名.C# 編程構(gòu)造3-3using System;class Test static void Main() int array1 = new int5; Console.WriteLine(10 * array12); 本示例本示例的輸出的輸出結(jié)果是結(jié)果是0.默認(rèn)值 常用數(shù)據(jù)類型的默認(rèn)值:.C# 中的輸入/輸出3-1使用 System 命名空間中的 Console 類的方

25、法最常用的方法 Console.ReadLine( ) Console.WriteLine( ).C# 中的輸入/輸出 3-2using System;class TestDefaultValues static void Main() int number, result; number=5; result=100 * number; Console.WriteLine(“當(dāng)當(dāng) 100 與數(shù)字與數(shù)字 0 相乘時(shí),結(jié)果為相乘時(shí),結(jié)果為 1 , number, result); 突出顯示的代碼行起著占位符的作用,即指定變量結(jié)果突出顯示的代碼行起著占位符的作用,即指定變量結(jié)果值的顯示位置值的顯示位

26、置。 index,alignment:formatString)可選整數(shù),指示包含格式化值的區(qū)域的最小寬度。如果格式化值的長(zhǎng)度小于對(duì)齊,則用空格填充該區(qū)域。如果對(duì)齊為負(fù),則格式化的值將在該區(qū)域中左對(duì)齊;如果為正,則格式化的值將右對(duì)齊。如果沒(méi)有指定對(duì)齊,則該區(qū)域的長(zhǎng)度為格式化值的長(zhǎng)度。如果指定對(duì)齊,則需用逗號(hào)分隔。G常規(guī),E 或 F 中較短的F浮點(diǎn)數(shù),常規(guī)表示法E用 E 表示法表示的浮點(diǎn)數(shù)(其中,E 代表 10 的次冪) N帶有分隔符的浮點(diǎn)數(shù)(在美國(guó)為逗號(hào))C貨幣,帶有貨幣符號(hào)和分隔符(在美國(guó)為逗號(hào))D十進(jìn)制數(shù),僅用于整型X十六進(jìn)制數(shù),僅用于整型.C# 中的輸入/輸出 3-3示例接受了一行的用戶

27、輸入示例接受了一行的用戶輸入, ,并將其回顯為輸出并將其回顯為輸出.if 結(jié)構(gòu)2-1用于執(zhí)行條件分支語(yǔ)法 表達(dá)式需要始終為 Boolean 類型的表達(dá)式.If結(jié)構(gòu)2-2上面的代碼段將顯示錯(cuò)誤消息上面的代碼段將顯示錯(cuò)誤消息 錯(cuò)誤錯(cuò)誤 CS0029:無(wú)法將類型無(wú)法將類型“string”隱式轉(zhuǎn)換為類型隱式轉(zhuǎn)換為類型“bool”.switch 語(yǔ)句2-1 語(yǔ)法 -每個(gè)每個(gè)case分支必須有一個(gè)分支必須有一個(gè)break語(yǔ)句語(yǔ)句.switch 語(yǔ)句2-2Switch結(jié)構(gòu)結(jié)構(gòu)可以充當(dāng)多個(gè)可以充當(dāng)多個(gè)if語(yǔ)句語(yǔ)句.循環(huán)結(jié)構(gòu)當(dāng)特定條件為 true 時(shí)執(zhí)行一組特定的指令,或?qū)⑻囟ㄖ噶罱M執(zhí)行一定次數(shù)循環(huán)結(jié)構(gòu)的類型

28、- while 循環(huán)循環(huán) do 循環(huán)循環(huán) for 循環(huán)循環(huán) foreach 循環(huán)循環(huán).while 循環(huán)while 循環(huán)執(zhí)行一組語(yǔ)句,直至指定條件為 falsebreak 語(yǔ)句 - 隨時(shí)跳出循環(huán)continue 語(yǔ)句 - 跳過(guò)當(dāng)前循環(huán),并開(kāi)始下一循環(huán).do 循環(huán)語(yǔ)法 -在條件檢查之前在條件檢查之前, ,循環(huán)體中的語(yǔ)句組至少執(zhí)行一次循環(huán)體中的語(yǔ)句組至少執(zhí)行一次.for 循環(huán)語(yǔ)法 -int sum=1;for(count=0;count10;count+) sum+;forfor語(yǔ)句循環(huán)語(yǔ)句循環(huán)1010次次,sum的的最終結(jié)果是的的最終結(jié)果是1010。.foreach 循環(huán)2-1foreach 循環(huán)

29、用于通過(guò)集合或數(shù)組來(lái)循環(huán)語(yǔ)法 -.foreach 循環(huán) 2-2using System;public class ForEachLoop static void Main(String args) int index; String array1=new String3; for(index=0;index3;index+) array1index=argsindex; foreach(String strName in array1) Console.WriteLine(strName); .C# 中的構(gòu)造函數(shù)C# 中的構(gòu)造函數(shù)與類同名class MyConstructorExpublic

30、MyConstructorEx()/MyConstructorEx 構(gòu)造函數(shù).C# 中的析構(gòu)函數(shù) C# 中的析構(gòu)函數(shù)與類也同名class MyConstructorEx public MyConstructorEx() /MyConstructorEx 構(gòu)造函數(shù) public MyConstructorEx() /MyConstructorEx 析構(gòu)函數(shù) .C# 的基本類型2-1C# 的數(shù)據(jù)類型分為兩種基本類型 值類型值類型int、char 和結(jié)構(gòu)和結(jié)構(gòu) 引用類型引用類型類、接口、數(shù)組和字符串類、接口、數(shù)組和字符串.C# 的基本類型2-2 值類型 僅在內(nèi)存中保存值 存儲(chǔ)與堆棧中 引用類型 將對(duì)

31、象的地址存儲(chǔ)與堆中 null表示沒(méi)有應(yīng)用任何對(duì)象 .值類型variableVal是值類型是值類型輸出結(jié)果為輸出結(jié)果為100100,而不而不是是200200.引用類型using System;class DataTypeTest public int variableVal;class DataTypeTestRef static void Main() DataTypeTest dataTest = new DataTypeTest(); dataTest.variableVal = 100; funcDataTypeTest(dataTest); Console.WriteLine(data

32、Test.variableVal); static void funcDataTypeTest(DataTypeTest dataTest) int tempVar=10; dataTest.variableVal = tempVar*20; .值類型和引用類型值引用變量保存實(shí)際值引用存儲(chǔ)位置內(nèi)聯(lián)(堆棧)堆默認(rèn)值零Null傳遞給函數(shù)的參數(shù)值的副本引用的副本.裝箱和取消裝箱裝箱是從值類型到引用類型的轉(zhuǎn)換取消裝箱是從引用類型到值類型的轉(zhuǎn)換示例.C# 中的數(shù)據(jù)類型處理C# 提供了一種“統(tǒng)一類型系統(tǒng)” C# 中所有數(shù)據(jù)類型都是從一個(gè)類即 object 類派生而來(lái)的.靜態(tài)成員成員不與任何特定的對(duì)象或類關(guān)

33、聯(lián)僅可以有一個(gè)實(shí)例static int staticMem;static int instanceCount()/instanceCount 實(shí)現(xiàn).數(shù)組一組具有類似數(shù)據(jù)類型的值屬于引用類型,因此存儲(chǔ)于堆中C# 中的數(shù)組聲明語(yǔ)法如下 DataTypenumber of elements ArrayName;int6 array1;.結(jié)構(gòu)結(jié)構(gòu)屬于值類型可以有方法可以擁有構(gòu)造函數(shù)不能實(shí)現(xiàn)繼承struct structEx public int structDataMember; public void structEx() /構(gòu)造函數(shù)實(shí)現(xiàn) public void structMethod1() /s

34、tructMethod1 實(shí)現(xiàn) .枚舉類型2-1public class Holiday public enum WeekDays Monday,Tuesday,Wednesday,Thursday,Friday public void GetWeekDays(String EmpName, WeekDays DayOff) /處理處理 WeekDays static void Main() Holiday myHoliday = new Holiday(); myHoliday.GetWeekDays(Richie, Holiday.WeekDays.Wednesday); 程序中聲明了僅接

35、受程序中聲明了僅接受5 5個(gè)值的枚舉類型個(gè)值的枚舉類型WeekDays.枚舉類型2-2C# 中的枚舉數(shù)都有與值相關(guān)聯(lián)的數(shù)字默認(rèn)情況下,枚舉數(shù)的第一個(gè)元素被指定為 0 值,后續(xù)的各個(gè)枚舉數(shù)元素的值依次遞增默認(rèn)值可以在初始化階段中重寫.編譯和運(yùn)行步驟 1 - 在記事本中輸入代碼步驟 2 - 使用 .cs 擴(kuò)展名保存文件步驟 3 - 切換至 DOS 提示符,再輸入以下命令要運(yùn)行 C# 文件,可以鍵入不帶擴(kuò)展名的文件名csc csc First.cs .總結(jié)在 C# 中,數(shù)據(jù)類型分為兩種基本類型,即值類型和引用類型。裝箱是指從值類型到引用類型的轉(zhuǎn)換,而取消裝箱是指從引用類型到值類型的轉(zhuǎn)換。C# 中的結(jié)

36、構(gòu)內(nèi)部可以定義方法,也可以擁有構(gòu)造函數(shù)。枚舉類型是聲明一組命名常數(shù)的獨(dú)特類型。.在 C# 中實(shí)現(xiàn) OOP 概念第四章第四章.作業(yè)點(diǎn)評(píng) 變量沒(méi)初始化 結(jié)構(gòu)的構(gòu)造函數(shù)沒(méi)有指定參數(shù) String string 引用(字符串)String是固定不變的,在進(jìn)行字符串連接的時(shí)候是新建一個(gè)字符串,進(jìn)行連接后,最后賦值,如果對(duì)String賦值多次,就會(huì)在內(nèi)存中保存多個(gè)這個(gè)對(duì)象的副本,浪費(fèi)系統(tǒng)資源 Csc 靜態(tài) 其它例子.回顧 第三章C#基礎(chǔ) C#變量的聲明方式如下變量的聲明方式如下: AccessModifier DataType VariableName; 在在C#中,數(shù)據(jù)類型分為兩種基本類型,即中,數(shù)據(jù)類

37、型分為兩種基本類型,即值類型和引用類型。值類型和引用類型。 裝箱是指從值類型到引用類型的轉(zhuǎn)換,而裝箱是指從值類型到引用類型的轉(zhuǎn)換,而取消裝箱是指從引用類型到值類型的轉(zhuǎn)換。取消裝箱是指從引用類型到值類型的轉(zhuǎn)換。 C#的結(jié)構(gòu)內(nèi)部可以定義方法,也可以擁有的結(jié)構(gòu)內(nèi)部可以定義方法,也可以擁有構(gòu)造函數(shù)。構(gòu)造函數(shù)。.目標(biāo) 在C#中使用構(gòu)造函數(shù) 在C#中使用析構(gòu)函數(shù) 解釋垃圾回收器的工作原理 討論方法重載 討論操作符重載 在C#中使用繼承 討論C#中的重寫.C# 中的構(gòu)造函數(shù)3-1是類中的特殊類型的方法是每次創(chuàng)建對(duì)象時(shí)要調(diào)用的函數(shù)通常用于初始化與類同名不返回值.構(gòu)造函數(shù)3-2using System;publ

38、ic class DaysInYear private int days; public DaysInYear() days = 365; static void Main(String args) DaysInYear newDaysInYear=new DaysInYear(); Console.WriteLine(newDaysInYear.days); 無(wú)構(gòu)造函數(shù)輸出無(wú)構(gòu)造函數(shù)輸出的結(jié)果是的結(jié)果是0 0有構(gòu)造函數(shù)輸出有構(gòu)造函數(shù)輸出結(jié)果是結(jié)果是365365.帶參數(shù)的構(gòu)造函數(shù)3-3public class DaysInYear private int days; public DaysIn

39、Year() days = 365; public DaysInYear(int day) days = day; public DaysInYear(String dayOne) days =Convert.ToInt32(dayOne); public void setDay(int newDays) days = newDays; 傳遞不同個(gè)數(shù)的參數(shù)傳遞不同個(gè)數(shù)的參數(shù) 傳遞個(gè)數(shù)相同但類型傳遞個(gè)數(shù)相同但類型不同的參數(shù)不同的參數(shù).C# 中的析構(gòu)函數(shù)由C#中的垃圾回收器調(diào)用垃圾回收器通過(guò)銷毀不再需要或不再被引用的對(duì)象來(lái)釋放內(nèi)存語(yǔ)法 DaysInYear()/ 析構(gòu)函數(shù)實(shí)現(xiàn)析構(gòu)函數(shù)實(shí)現(xiàn)不能對(duì)結(jié)構(gòu)

40、使用析構(gòu)函數(shù)。只能對(duì)類使用析構(gòu)函數(shù)。一個(gè)類只能有一個(gè)析構(gòu)函數(shù)。無(wú)法繼承或重載析構(gòu)函數(shù)。無(wú)法調(diào)用析構(gòu)函數(shù)。它們是被自動(dòng)調(diào)用的。析構(gòu)函數(shù)既沒(méi)有修飾符,也沒(méi)有參數(shù)。.垃圾回收器3-1垃圾回收器的工作原理 如果為定義析構(gòu)函數(shù)的對(duì)象分配了內(nèi)存,運(yùn)行如果為定義析構(gòu)函數(shù)的對(duì)象分配了內(nèi)存,運(yùn)行庫(kù)將庫(kù)將把該對(duì)象添加到需要銷毀的對(duì)象的列表中。把該對(duì)象添加到需要銷毀的對(duì)象的列表中。 垃圾回收垃圾回收器定期檢查器定期檢查有沒(méi)有不再被引用的對(duì)象有沒(méi)有不再被引用的對(duì)象 如果如果找到了找到了其名稱沒(méi)有列在銷毀器列表中的對(duì)其名稱沒(méi)有列在銷毀器列表中的對(duì)象,就立即清除該對(duì)象。象,就立即清除該對(duì)象。 完成垃圾回收后完成垃圾回收后

41、,將調(diào)用銷毀器線程,該線程調(diào)將調(diào)用銷毀器線程,該線程調(diào)用有標(biāo)記為用有標(biāo)記為“準(zhǔn)備銷毀準(zhǔn)備銷毀”的對(duì)象的銷毀方法的對(duì)象的銷毀方法(析構(gòu)函數(shù))。(析構(gòu)函數(shù))。.垃圾回收器3-2對(duì)象銷毀過(guò)程發(fā)生后,就將該對(duì)象從需要銷毀的對(duì)象列表中刪除。因?yàn)樵搶?duì)象沒(méi)有被引用,也沒(méi)有列在銷毀器列表中,所以下次進(jìn)行垃圾回收時(shí)就會(huì)將它清除。.垃圾回收器3-3有析構(gòu)函數(shù)的對(duì)象占用的資源較多,因?yàn)榧词共辉傩枰鼈?,它們?nèi)詴?huì)在內(nèi)存中駐留較長(zhǎng)時(shí)間。銷毀過(guò)程作為獨(dú)立的線程執(zhí)行,該線程會(huì)占用大量資源。GC.Collect ()強(qiáng)制進(jìn)行垃圾回收。強(qiáng)制進(jìn)行垃圾回收。 .方法重載重載方法有兩種方式 指指定不同個(gè)數(shù)的參數(shù)定不同個(gè)數(shù)的參數(shù) 指定

42、指定不同類型的參數(shù)不同類型的參數(shù).不同參數(shù)個(gè)數(shù)的方法重載using System;public class Area private int areaVal; public void AreaCal(int radius) areaVal = (22/7)* radius*radius; public void AreaCal(int length, int breadth) areaVal = length*breadth; public void AreaCal(int length, int breadth, int height) areaVal = length*breadth*he

43、ight; 參數(shù)的類型相同參數(shù)的類型相同參數(shù)個(gè)數(shù)不同參數(shù)個(gè)數(shù)不同.不同參數(shù)類型的方法重載. public void AreaCal(int radius) areaVal = (22/7)* radius*radius;public void AreaCal(string shapeName) Console.WriteLine(0 的面積沒(méi)有計(jì)算的面積沒(méi)有計(jì)算,shapeName);. 方法中參數(shù)個(gè)數(shù)相等方法中參數(shù)個(gè)數(shù)相等, ,參數(shù)類型不同參數(shù)類型不同.操作符重載3-1 重載操作符意味著使該操作符具有不同的行為 使用操作符可以使方程式簡(jiǎn)單易懂/ 第 1 行int result = Decim

44、al.Add(54, 200);/ 第 2 行int result2 = 54 + 200;上述兩行執(zhí)行同樣的操作上述兩行執(zhí)行同樣的操作, ,但操作符更簡(jiǎn)便易懂但操作符更簡(jiǎn)便易懂.操作符重載3-2以下是可以重載的操作符列表public static public static result-typeresult-type operator operator unary-operatorunary-operator ( ( op-typeop-type operand ) ) public static public static result-typeresult-type operator

45、operator binary-binary-operatoroperator ( ( op-type operand, , op-type2 operand2 ) ) .操作符重載3-3using System;public struct Distance public Distance(int lon, int mag) this.longitude = lon;this.latitude = mag; int longitude, latitude; public static Distance operator - (Distance first, Distance second) r

46、eturn new Distance(first.longitude - second.longitude, first.latitude - second.latitude); / 主函數(shù)主函數(shù) public static void Main() Distance start = new Distance();Distance newDistance = new Distance();Distance finish = new Distance();start.longitude = 12;start.latitude = 10;finish.longitude = 2;finish.lat

47、itude = 1;newDistance = start - finish;Console.WriteLine(終點(diǎn)的位置在起點(diǎn)以東 0 度,以北 1 度。, newDistance.longitude,newDistance.latitude); .C# 中的繼承2-1將新類作為另一個(gè)類的后代來(lái)聲明和使用避免重復(fù)編寫代碼提供代碼重用的巨大好處.C# 中的繼承2-2有兩種繼承類型 單一繼承單一繼承 多重繼承多重繼承 C#只支持單一繼承,不支持多重繼承只支持單一繼承,不支持多重繼承.單一繼承using System;class CharacterVal public int setCharVa

48、l(char ch) char charVal=ch; Console.WriteLine(輸入的字符是輸入的字符是:0,charVal); return(0); class StringVal : CharacterVal public string strVal; public int setStrVal(string str) strVal=str; Console.WriteLine(輸入的字符串是輸入的字符串是:0,strVal); return(0); class Inheritance static void Main() StringVal object1 = new Stri

49、ngVal(); Object1.setCharVal(j); Object1.setStrVal(enjoy); 類類StringVal繼承繼承CharacterVal因此可以直接引用方法因此可以直接引用方法setCharVal.密封類 如果不需要類被繼承則應(yīng)當(dāng)密封該類sealed class classOne / 類的實(shí)現(xiàn)通過(guò)指定通過(guò)指定sealed關(guān)鍵字,可以密封任何類關(guān)鍵字,可以密封任何類.方法重寫2-1重寫基類中現(xiàn)有方法的步驟: 在繼承類中聲明同名的新方法 在該方法名前附加new關(guān)鍵字 .方法重寫2-2using System;class IntAddition public voi

50、d add() int firstNum=1; int secondNum=2; Console.WriteLine(兩數(shù)之和是:兩數(shù)之和是:0, firstNum+secondNum); class StringAddition : IntAddition new public void add() string firstStr=a; string secondStr=b; Console.WriteLine(兩字符串之和是兩字符串之和是:0, firstStr+secondStr); class MethodOverride public static void Main() Strin

51、gAddition objStringAddition = new StringAddition(); objStringAddition.add(); 在在StringAddition類中基類中類中基類中add方法被重載方法被重載.總結(jié)2-1 帶參數(shù)的構(gòu)造函數(shù)是接受參數(shù)的構(gòu)造函數(shù) 在 C# 中,析構(gòu)函數(shù)由垃圾回收器調(diào)用。 在 C#中,有兩種方式來(lái)重載方法 指定不同個(gè)數(shù)的參數(shù) 指定不同類型的參數(shù) C#允許重載操作符 .總結(jié)2-2 重載操作符意味著使操作符(例如,加法操作符 +)在應(yīng)用于結(jié)構(gòu)或類的某些對(duì)象時(shí)具有不同的行為 C# 不支持多重繼承 要重寫基類的現(xiàn)有方法,需要在繼承類中聲明一個(gè)同名的新

52、方法,并在方法名稱前附加 new 關(guān)鍵字.C# 中的高級(jí) OOP 概念第五章第五章.回顧 第四章 - 實(shí)現(xiàn)C中的高級(jí)OOP概念 帶帶參數(shù)的構(gòu)造函數(shù)是指接受參數(shù)的構(gòu)造函參數(shù)的構(gòu)造函數(shù)是指接受參數(shù)的構(gòu)造函數(shù)。數(shù)。 在 C#中,析構(gòu)函數(shù)由垃圾回收器調(diào)用。中,析構(gòu)函數(shù)由垃圾回收器調(diào)用。 在在C#中允許方法重載中允許方法重載 在在C#中允許操作符重載中允許操作符重載 C#不支持多重繼續(xù)不支持多重繼續(xù) 要要重寫基類的現(xiàn)有方法,需要在繼承類中重寫基類的現(xiàn)有方法,需要在繼承類中聲明一個(gè)同名的新方法,并在方法名稱前聲明一個(gè)同名的新方法,并在方法名稱前附加附加 new關(guān)鍵字關(guān)鍵字 .目標(biāo) 討論多態(tài)性 使用虛函數(shù)

53、討論抽象基類 討論接口的概念 使用接口.C# 中的多態(tài)性6-1 多態(tài)性和虛函數(shù)關(guān)系非常密切 多態(tài)性允許在運(yùn)行時(shí)實(shí)現(xiàn)派生類的方法 需要從基類的對(duì)象調(diào)用派生類方法時(shí),可以使用虛函數(shù)public class ShapeObj public virtual void area() System.Console.WriteLine(這是一個(gè)虛這是一個(gè)虛 Area 方法方法); .C# 中的多態(tài)性6-2.C# 中的多態(tài)性6-3public class Circle : ShapeObj public override void area() System.Console.WriteLine(這是這是 Ci

54、rcle 的的 Area() 方法方法); public class Rectangle : ShapeObj public override void area() System.Console.WriteLine(這是這是 Rectangle 的的 Area() 方法方法); public class Square : ShapeObj public override void area() System.Console.WriteLine(這是這是 Square 的的 Area() 方法方法); 定義了三個(gè)類(定義了三個(gè)類(RectangleRectangle、Circle Circle

55、 和和 SquareSquare)。)。這些類是從這些類是從 ShapeObj ShapeObj 類派生的,類派生的,并且重寫了并且重寫了ShapeObj ShapeObj 類的類的 area() area() 方法。方法。override override 關(guān)鍵字用于重寫基類函數(shù)關(guān)鍵字用于重寫基類函數(shù) area()area()。.C# 中的多態(tài)性6-4public class PolymorphismExp public static void main() ShapeObj objArray = new ShapeObj4; objArray0 = new ShapeObj(); objA

56、rray1 = new Rectangle(); objArray2 = new Circle(); objArray3 = new Square(); foreach (ShapeObj iterateArray in objArray) iterateArray.area(); 每個(gè)派生自每個(gè)派生自 ShapeObj ShapeObj 的類的的類的 area()area()方法都被方法都被調(diào)用調(diào)用 .C# 中的多態(tài)性6-5class SecondExp public int firstMethod() return(secondMethod()*thirdMethod(); public

57、virtual int secondMethod() return(10); public int thirdMethod() return(20); class DerivedClass : SecondExp public override int secondMethod() return(30); class TestPublic static void main() DerivedClass objDerived = new DerivedClass();System.Console.WriteLine(objDerived.firstMethod(); 在在DerivedClass

58、DerivedClass中重寫基類中中重寫基類中的虛函數(shù)的虛函數(shù)secondMethod()secondMethod().C# 中的多態(tài)性6-6 多態(tài)性是智能重寫 多態(tài)性 - 在運(yùn)行時(shí)決定調(diào)用哪個(gè)方法 多態(tài)性需要虛函數(shù),而虛函數(shù)則需要進(jìn)行方法重寫.抽象基類2-1 抽象基類是可以被繼承的類 不能創(chuàng)建抽象類的對(duì)象 C#允許在類定義中添加abstract修飾符來(lái)創(chuàng)建抽象基類。 可以有實(shí)現(xiàn)的方法.抽象基類2-2using System;abstract class BaseClass public abstract void abstractFunc(); public void nonAbstrac

59、tFunc() Console.WriteLine(這是這是 nonAbractFunc() 方法!方法!); class DerivedClass : BaseClass public override void abstractFunc() Console.WriteLine(這是這是 abstractFunc() 方法!方法!); class Test static void main() DerivedClass objDerived = new DerivedClass(); BaseClass objBase = objDerived; objBase.abstractFunc()

60、; objDerived.nonAbstractFunc(); 在派生類在派生類DerivedClassDerivedClass中重寫抽象基類的抽象中重寫抽象基類的抽象方法方法abstractFunc()abstractFunc().接口4-1 接口相當(dāng)于純抽象基類 它只能包含抽象方法,而不能包含任何方法實(shí)現(xiàn) 實(shí)現(xiàn)特定接口的類必須實(shí)現(xiàn)該接口列出的成員 只能有方法 屬性 索引的聲明 只能是public internal 方法聲明不能有訪問(wèn)修飾符.public interface IFile int delFile(); void disFile();.接口4-2public class MyFile : IFi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論