第8章 面象對(duì)象程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第8章 面象對(duì)象程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第8章 面象對(duì)象程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第8章 面象對(duì)象程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第8章 面象對(duì)象程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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#程序設(shè)計(jì)案例教程程序設(shè)計(jì)案例教程第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)了解面向?qū)ο蟾拍睢A私饷嫦驅(qū)ο蟾拍?。掌握類的定義和使用。掌握類的定義和使用。掌握對(duì)象的使用。掌握對(duì)象的使用。掌握屬性的使用。掌握屬性的使用。了解索引器。了解索引器。掌握方法的重載。掌握方法的重載。熟悉構(gòu)造函數(shù)的使用和重載。熟悉構(gòu)造函數(shù)的使用和重載。熟悉析構(gòu)函數(shù)的使用。熟悉析構(gòu)函數(shù)的使用。掌握靜態(tài)類和靜態(tài)成員的使用。掌握靜態(tài)類和靜態(tài)成員的使用。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.1 面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向?qū)ο蟪绦蛟O(shè)

2、計(jì)概述8.1.1 對(duì)象對(duì)象對(duì)象是面向?qū)ο蟮某绦蛟O(shè)計(jì)中涉及的核心概念。它代對(duì)象是面向?qū)ο蟮某绦蛟O(shè)計(jì)中涉及的核心概念。它代表著真實(shí)世界中一個(gè)實(shí)體或概念。例如,汽車(chē)、公司表著真實(shí)世界中一個(gè)實(shí)體或概念。例如,汽車(chē)、公司等都可以建模成對(duì)象。等都可以建模成對(duì)象。對(duì)象具有狀態(tài)、行為和身份。例如:現(xiàn)實(shí)中我們用唯對(duì)象具有狀態(tài)、行為和身份。例如:現(xiàn)實(shí)中我們用唯一的車(chē)牌號(hào)來(lái)標(biāo)識(shí)這臺(tái)汽車(chē)的身份。一的車(chē)牌號(hào)來(lái)標(biāo)識(shí)這臺(tái)汽車(chē)的身份。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.1.2 類類類是對(duì)對(duì)象進(jìn)行分類的聲明,是人們對(duì)客觀對(duì)象的不類是對(duì)對(duì)象進(jìn)行分類的聲明,是人們對(duì)客觀對(duì)象的不斷認(rèn)識(shí)而抽象出來(lái)的概念。斷認(rèn)識(shí)而

3、抽象出來(lái)的概念。類和對(duì)象具有不同的概念。類定義對(duì)象的類型,是基類和對(duì)象具有不同的概念。類定義對(duì)象的類型,是基于對(duì)象的抽象,但它不是對(duì)象本身。于對(duì)象的抽象,但它不是對(duì)象本身。在在C#中,根據(jù)類的來(lái)源可分為系統(tǒng)類和自定義類。系中,根據(jù)類的來(lái)源可分為系統(tǒng)類和自定義類。系統(tǒng)類是由系統(tǒng)預(yù)先定義在統(tǒng)類是由系統(tǒng)預(yù)先定義在.NET框架類庫(kù)中。自定義類框架類庫(kù)中。自定義類則是由程序員根據(jù)系統(tǒng)開(kāi)發(fā)的需要而創(chuàng)建的類。則是由程序員根據(jù)系統(tǒng)開(kāi)發(fā)的需要而創(chuàng)建的類。類在本質(zhì)上是一種數(shù)據(jù)類型,所以類的用法和基本數(shù)類在本質(zhì)上是一種數(shù)據(jù)類型,所以類的用法和基本數(shù)據(jù)類型的用法基本相同。據(jù)類型的用法基本相同。第第8章章 面向?qū)ο蟪绦?/p>

4、設(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.1.3 消息和方法消息和方法在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象不是獨(dú)立存在的,對(duì)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象不是獨(dú)立存在的,對(duì)象之間要進(jìn)行交互,交互通過(guò)消息發(fā)生。象之間要進(jìn)行交互,交互通過(guò)消息發(fā)生。行為(在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,又稱行為(在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,又稱“方法方法”),),根據(jù)根據(jù)Grady Booch的定義:行為是對(duì)象根據(jù)其狀態(tài)的的定義:行為是對(duì)象根據(jù)其狀態(tài)的更改和消息的傳遞進(jìn)行的作用和反作用。更改和消息的傳遞進(jìn)行的作用和反作用。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.1.4 類的封裝性類的封裝性在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,在面向?qū)ο蟮某?/p>

5、序設(shè)計(jì)中,“封裝封裝”就是隱藏了類的就是隱藏了類的實(shí)現(xiàn)細(xì)節(jié),程序員在使用類時(shí),只要知道該類公有成實(shí)現(xiàn)細(xì)節(jié),程序員在使用類時(shí),只要知道該類公有成員的功能并執(zhí)行相關(guān)的操作,而不需要知道該類公有員的功能并執(zhí)行相關(guān)的操作,而不需要知道該類公有成員是如何實(shí)現(xiàn)的。成員是如何實(shí)現(xiàn)的。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2 對(duì)象對(duì)象 【課堂案例課堂案例8-1】在學(xué)生成績(jī)管理系統(tǒng)中,需要對(duì)學(xué)生的基本信息進(jìn)在學(xué)生成績(jī)管理系統(tǒng)中,需要對(duì)學(xué)生的基本信息進(jìn)行管理,現(xiàn)要求使用面向?qū)ο蟮姆椒ń邮諏W(xué)生信息并顯示。一個(gè)學(xué)生行管理,現(xiàn)要求使用面向?qū)ο蟮姆椒ń邮諏W(xué)生信息并顯示。一個(gè)學(xué)生的基本信息包括:學(xué)號(hào)、姓

6、名、出生年月、性別、入學(xué)時(shí)間、所在班的基本信息包括:學(xué)號(hào)、姓名、出生年月、性別、入學(xué)時(shí)間、所在班級(jí)、家庭住址、聯(lián)系電話、手機(jī)以及備注。級(jí)、家庭住址、聯(lián)系電話、手機(jī)以及備注?!景咐龑W(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】掌握類及成員的使用掌握類及成員的使用掌握訪問(wèn)修飾符的使用掌握訪問(wèn)修飾符的使用掌握對(duì)象的創(chuàng)建和訪問(wèn)掌握對(duì)象的創(chuàng)建和訪問(wèn)【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】類的定義、字段、方法的定義、創(chuàng)建對(duì)象類的定義、字段、方法的定義、創(chuàng)建對(duì)象【案例完成步驟案例完成步驟】(1)定義類)定義類(2)定義類的成員字段)定義類的成員字段(3)定義類的成員方法)定義類的成員方法(4)加載訪問(wèn)修飾符)加載訪問(wèn)修飾符(5)創(chuàng)建對(duì)象并訪問(wèn)

7、對(duì)象成員)創(chuàng)建對(duì)象并訪問(wèn)對(duì)象成員(6)實(shí)現(xiàn)應(yīng)用程序)實(shí)現(xiàn)應(yīng)用程序第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2.1 定義類定義類 在在C#中,定義類需要使用關(guān)鍵字中,定義類需要使用關(guān)鍵字Class,類定義的格式如下:,類定義的格式如下: class 類名類名 /類成員類成員 說(shuō)明:說(shuō)明:(1)類名必須是合法的)類名必須是合法的C#命名命名(2)“類成員類成員”包括類中所有的數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作,如字段、包括類中所有的數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作,如字段、屬屬 性、方法和構(gòu)造函數(shù)等。性、方法和構(gòu)造函數(shù)等。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2.2 定義定義類的成員字

8、段類的成員字段 字段是類的成員之一。定義字段的方法和之前定義變量的方法相同。字段是類的成員之一。定義字段的方法和之前定義變量的方法相同。 例如:例如:String sStuNumber; /定義學(xué)號(hào)字段定義學(xué)號(hào)字段 String sStuName; /定義姓名字段定義姓名字段第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2.3 定義定義類的成員方法類的成員方法 方法也是類的成員之一,其實(shí)質(zhì)就是在類中聲明函數(shù),為類的對(duì)象提方法也是類的成員之一,其實(shí)質(zhì)就是在類中聲明函數(shù),為類的對(duì)象提供行為。方法遵循先定義后使用的規(guī)則,在供行為。方法遵循先定義后使用的規(guī)則,在C#中方法必須放在類定中方法

9、必須放在類定義中聲明,即方法必須是某一個(gè)類的類成員。義中聲明,即方法必須是某一個(gè)類的類成員。 1、聲明方法,格式如下:、聲明方法,格式如下: 方法修飾符方法修飾符 返回類型返回類型 方法名方法名 (參數(shù)列表參數(shù)列表) /方法體方法體 (1)“方法修飾符方法修飾符”包括訪問(wèn)修飾符(如包括訪問(wèn)修飾符(如Public 、private、protected)、靜態(tài)()、靜態(tài)(Static)修飾符、虛方法()修飾符、虛方法(Virtual)、抽象)、抽象(abstract)修飾符等。)修飾符等。 (2) “返回類型返回類型”表示一個(gè)方法結(jié)果的數(shù)據(jù)類型,可以是任何合法的表示一個(gè)方法結(jié)果的數(shù)據(jù)類型,可以是任

10、何合法的C#數(shù)據(jù)類型。類的方法將執(zhí)行的結(jié)果作為返回值返回給調(diào)用者。如數(shù)據(jù)類型。類的方法將執(zhí)行的結(jié)果作為返回值返回給調(diào)用者。如果一個(gè)方法不返回任何值,它的返回類型用空類型(果一個(gè)方法不返回任何值,它的返回類型用空類型(void)表示。)表示。 (3) “方法名方法名”是一個(gè)合法的是一個(gè)合法的C#語(yǔ)言標(biāo)識(shí)符,對(duì)方法的命名,通常要語(yǔ)言標(biāo)識(shí)符,對(duì)方法的命名,通常要求能描述方法的功能。求能描述方法的功能。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) (4) “參數(shù)列表參數(shù)列表”說(shuō)明一個(gè)方法所需要的參數(shù),即傳遞給方法的數(shù)據(jù)值。說(shuō)明一個(gè)方法所需要的參數(shù),即傳遞給方法的數(shù)據(jù)值。每個(gè)參數(shù)都有參數(shù)類型和

11、參數(shù)名。每個(gè)參數(shù)都有參數(shù)類型和參數(shù)名。 (5)方法體中的語(yǔ)句定義了該方法所執(zhí)行的任務(wù)。方法體中的語(yǔ)句定義了該方法所執(zhí)行的任務(wù)。 2.調(diào)用類的成員方法調(diào)用類的成員方法 聲明方法后,我們就可以開(kāi)始調(diào)用方法了。對(duì)于調(diào)用方法,根據(jù)調(diào)用聲明方法后,我們就可以開(kāi)始調(diào)用方法了。對(duì)于調(diào)用方法,根據(jù)調(diào)用的環(huán)境的環(huán)境不同,大致可以分成兩種方式:不同,大致可以分成兩種方式: (1) 如果在聲明方法的類定義中調(diào)用該方法,調(diào)用方法的格式:如果在聲明方法的類定義中調(diào)用該方法,調(diào)用方法的格式: 方法名(參數(shù)列表)方法名(參數(shù)列表) (2) 如果在方法聲明的類定義外調(diào)用該方法,則需通過(guò)創(chuàng)建對(duì)象的方如果在方法聲明的類定義外調(diào)用

12、該方法,則需通過(guò)創(chuàng)建對(duì)象的方式,調(diào)用式,調(diào)用 方法的格式為:方法的格式為: 對(duì)象名對(duì)象名.方法名(參數(shù)列表)方法名(參數(shù)列表) 提示提示:根據(jù):根據(jù)課堂案例課堂案例8-1的要求,要實(shí)現(xiàn)接收學(xué)生的信息并顯示,因此需要的要求,要實(shí)現(xiàn)接收學(xué)生的信息并顯示,因此需要定義兩個(gè)成員方法定義兩個(gè)成員方法Accept()和和Display()。Accept()用于接收學(xué)生的基本信息,用于接收學(xué)生的基本信息,Display()用于顯示學(xué)生的基本信息。用于顯示學(xué)生的基本信息。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2.4 加載加載訪問(wèn)修飾符訪問(wèn)修飾符 C#中提供了許多訪問(wèn)控制符,它們確定了是否允

13、許其他代碼對(duì)類的某個(gè)特定中提供了許多訪問(wèn)控制符,它們確定了是否允許其他代碼對(duì)類的某個(gè)特定成員進(jìn)行訪問(wèn)。通過(guò)訪問(wèn)修飾符,成員進(jìn)行訪問(wèn)。通過(guò)訪問(wèn)修飾符, C#能實(shí)現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計(jì)中的一個(gè)能實(shí)現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計(jì)中的一個(gè)最重要的特征最重要的特征封裝性封裝性 。C#中最常用的訪問(wèn)修飾符及其含義見(jiàn)表中最常用的訪問(wèn)修飾符及其含義見(jiàn)表8-1。 表表8-1 訪問(wèn)修飾符訪問(wèn)修飾符聲明的可訪問(wèn)性聲明的可訪問(wèn)性含含 義義public(公有的公有的)訪問(wèn)不受限制訪問(wèn)不受限制protected(受保護(hù)的受保護(hù)的)訪問(wèn)僅限于包含類或從包含類派訪問(wèn)僅限于包含類或從包含類派生的類型生的類型Internal(內(nèi)部的內(nèi)部的)

14、訪問(wèn)僅限于當(dāng)前程序集訪問(wèn)僅限于當(dāng)前程序集Protected internal(受保護(hù)內(nèi)部受保護(hù)內(nèi)部的的)訪問(wèn)僅限于從包含類派生的當(dāng)前訪問(wèn)僅限于從包含類派生的當(dāng)前程序集或類型。程序集或類型。private (私有的)(私有的) 訪問(wèn)僅限于包含類型。訪問(wèn)僅限于包含類型。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.2.5 創(chuàng)建對(duì)象并訪問(wèn)對(duì)象成員創(chuàng)建對(duì)象并訪問(wèn)對(duì)象成員1.創(chuàng)建對(duì)象創(chuàng)建對(duì)象 類的定義完成后,接下來(lái)就是創(chuàng)建對(duì)象,只有通過(guò)對(duì)象類的定義完成后,接下來(lái)就是創(chuàng)建對(duì)象,只有通過(guò)對(duì)象才能訪問(wèn)類的成員。才能訪問(wèn)類的成員?!皠?chuàng)建對(duì)象創(chuàng)建對(duì)象”也就是常說(shuō)的也就是常說(shuō)的“對(duì)象實(shí)對(duì)象實(shí)例化例化”

15、,對(duì)象實(shí)例化是指在定義對(duì)象時(shí),使對(duì)象具有相應(yīng),對(duì)象實(shí)例化是指在定義對(duì)象時(shí),使對(duì)象具有相應(yīng)的存儲(chǔ)空間用來(lái)存儲(chǔ)對(duì)象的信息。對(duì)象實(shí)例化時(shí)占用的空的存儲(chǔ)空間用來(lái)存儲(chǔ)對(duì)象的信息。對(duì)象實(shí)例化時(shí)占用的空間主要是數(shù)據(jù)成員需要的內(nèi)存空間。用關(guān)鍵字間主要是數(shù)據(jù)成員需要的內(nèi)存空間。用關(guān)鍵字new創(chuàng)建對(duì)創(chuàng)建對(duì)象。象。 格式一格式一: ; /先聲明對(duì)象先聲明對(duì)象 對(duì)象名對(duì)象名 = new 類名;類名; /再創(chuàng)建對(duì)象再創(chuàng)建對(duì)象 格式二格式二: = new ; /邊聲明邊創(chuàng)建邊聲明邊創(chuàng)建 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 例如,對(duì)案例中定義的學(xué)生類例如,對(duì)案例中定義的學(xué)生類Student,現(xiàn)要?jiǎng)?chuàng)建該類的

16、實(shí)例對(duì)象,現(xiàn)要?jiǎng)?chuàng)建該類的實(shí)例對(duì)象stuOne。創(chuàng)建的代碼格式如下所示:。創(chuàng)建的代碼格式如下所示: 格式一格式一 Student stuOne; /先聲明對(duì)象先聲明對(duì)象 stuOne = new Student(); /再創(chuàng)建對(duì)象再創(chuàng)建對(duì)象 格式二格式二 Student stuOne = new Student(); /邊聲明邊創(chuàng)建邊聲明邊創(chuàng)建 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 2. 訪問(wèn)對(duì)象訪問(wèn)對(duì)象 創(chuàng)建對(duì)象的目的是要通過(guò)對(duì)象來(lái)訪問(wèn)類的成員。訪問(wèn)對(duì)象實(shí)質(zhì)上就是創(chuàng)建對(duì)象的目的是要通過(guò)對(duì)象來(lái)訪問(wèn)類的成員。訪問(wèn)對(duì)象實(shí)質(zhì)上就是訪問(wèn)對(duì)象成員,通過(guò)對(duì)象訪問(wèn)成員的方式是使用成員運(yùn)算符訪問(wèn)

17、對(duì)象成員,通過(guò)對(duì)象訪問(wèn)成員的方式是使用成員運(yùn)算符“.”。 例如:例如: stuOne.Display(); /訪問(wèn)成員方法訪問(wèn)成員方法 stuOne.Accept(); /訪問(wèn)對(duì)象的方法成員訪問(wèn)對(duì)象的方法成員 stuOne. sStuNumber = “001”; /為該對(duì)象的學(xué)號(hào)成員賦值為該對(duì)象的學(xué)號(hào)成員賦值 stuOne. sStuName = “張三張三”; /為該對(duì)象的姓名字段成員賦值為該對(duì)象的姓名字段成員賦值 8.2.6 實(shí)現(xiàn)應(yīng)用程序?qū)崿F(xiàn)應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 演示應(yīng)用程序編輯、編譯和運(yùn)行過(guò)程第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)

18、 課堂實(shí)踐課堂實(shí)踐8-1任務(wù)一任務(wù)一在學(xué)生管理系統(tǒng)中,除了需要管理學(xué)生信息外,還需要對(duì)開(kāi)設(shè)在學(xué)生管理系統(tǒng)中,除了需要管理學(xué)生信息外,還需要對(duì)開(kāi)設(shè)的課程進(jìn)行管理,請(qǐng)編寫(xiě)程序?qū)崿F(xiàn)對(duì)課程信息的接收與顯示。課程的的課程進(jìn)行管理,請(qǐng)編寫(xiě)程序?qū)崿F(xiàn)對(duì)課程信息的接收與顯示。課程的相關(guān)信息包括,課程編號(hào)、課程名稱、學(xué)時(shí)、考核方式以及任課教師。相關(guān)信息包括,課程編號(hào)、課程名稱、學(xué)時(shí)、考核方式以及任課教師。 任務(wù)二任務(wù)二定義一個(gè)數(shù)學(xué)類,該類提供了如下幾種功能:定義一個(gè)數(shù)學(xué)類,該類提供了如下幾種功能:1、輸出、輸出1100之之間的整數(shù)之和間的整數(shù)之和 2、對(duì)隨機(jī)輸入的數(shù),求其平方根。、對(duì)隨機(jī)輸入的數(shù),求其平方根。 第

19、第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.3 屬性屬性 【課堂案例課堂案例8-2】在學(xué)生管理系統(tǒng)中,現(xiàn)要求能在在學(xué)生管理系統(tǒng)中,現(xiàn)要求能在Student類類的外部實(shí)現(xiàn)對(duì)該類中的學(xué)號(hào)(的外部實(shí)現(xiàn)對(duì)該類中的學(xué)號(hào)(sStuNumber)、姓名)、姓名(sStuName)字段進(jìn)行讀)字段進(jìn)行讀/寫(xiě)操作,而對(duì)于性別寫(xiě)操作,而對(duì)于性別(sGender)字段,在類外只允許進(jìn)行讀操作。)字段,在類外只允許進(jìn)行讀操作?!景咐龑W(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】掌握屬性的聲明掌握屬性的聲明 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】聲明屬性聲明屬性 【案例完成步驟案例完成步驟】(1)確實(shí)對(duì)字段的讀)確實(shí)對(duì)字段的讀/寫(xiě)方式寫(xiě)方式

20、 (2)聲明屬性)聲明屬性 (3)實(shí)現(xiàn)應(yīng)用程序)實(shí)現(xiàn)應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.3.1 聲明屬性聲明屬性 在類定義外部,是不允許對(duì)私有或受保護(hù)字段在類定義外部,是不允許對(duì)私有或受保護(hù)字段進(jìn)行訪問(wèn)。但如果在程序?qū)崿F(xiàn)過(guò)程中需要在類外進(jìn)行訪問(wèn)。但如果在程序?qū)崿F(xiàn)過(guò)程中需要在類外對(duì)此類字段進(jìn)行訪問(wèn),又該如何實(shí)現(xiàn)呢?對(duì)此類字段進(jìn)行訪問(wèn),又該如何實(shí)現(xiàn)呢? 答案是:通過(guò)屬性可以設(shè)置對(duì)字段的訪問(wèn)方式,答案是:通過(guò)屬性可以設(shè)置對(duì)字段的訪問(wèn)方式,如只讀、只寫(xiě)、讀如只讀、只寫(xiě)、讀/寫(xiě)等。寫(xiě)等。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 聲明屬性的語(yǔ)法格式如下:聲明屬性

21、的語(yǔ)法格式如下: 訪問(wèn)修飾符訪問(wèn)修飾符 類型類型 屬性名屬性名 get return 字段名;字段名; /讀字段值讀字段值 set字段名字段名 = value; /將值寫(xiě)入字段將值寫(xiě)入字段 通過(guò)通過(guò)get、set關(guān)鍵字,我們可以將屬性聲明為可讀可寫(xiě)、只讀、或只關(guān)鍵字,我們可以將屬性聲明為可讀可寫(xiě)、只讀、或只寫(xiě)屬性。其中寫(xiě)屬性。其中g(shù)et設(shè)置屬性為可讀,而設(shè)置屬性為可讀,而set設(shè)置屬性為可寫(xiě)。設(shè)置屬性為可寫(xiě)。 在屬性聲明中,在屬性聲明中,get完成數(shù)據(jù)值的讀取完成數(shù)據(jù)值的讀取,return返回讀取的值返回讀取的值,set完成對(duì)完成對(duì)數(shù)據(jù)值的修改數(shù)據(jù)值的修改,value是一個(gè)關(guān)鍵字是一個(gè)關(guān)鍵字,

22、表示要寫(xiě)入數(shù)據(jù)成員的值。表示要寫(xiě)入數(shù)據(jù)成員的值。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 例如:要設(shè)置客戶例如:要設(shè)置客戶Customer類中的類中的customerId、customerName字段字段為讀寫(xiě),為讀寫(xiě),address為只讀,代碼如下:為只讀,代碼如下:Class Customer private string customerId; private string customerName; private string address; public string CustomerId /對(duì)應(yīng)對(duì)應(yīng)customerId get return customerId;

23、set customerId = value; public string CustomerName /對(duì)應(yīng)對(duì)應(yīng)customerName get return customerName; set customerName = value; public string Address /對(duì)應(yīng)對(duì)應(yīng)address get return address; 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)8.3.2 訪問(wèn)屬性:訪問(wèn)屬性:對(duì)屬性進(jìn)行聲明后,就可以訪問(wèn)屬性了。訪問(wèn)屬性與訪問(wèn)類的公有數(shù)據(jù)對(duì)屬性進(jìn)行聲明后,就可以訪問(wèn)屬性了。訪問(wèn)屬性與訪問(wèn)類的公有數(shù)據(jù)成員一樣,也是通過(guò)成員運(yùn)算符進(jìn)行訪問(wèn)。訪問(wèn)

24、的格式如下:成員一樣,也是通過(guò)成員運(yùn)算符進(jìn)行訪問(wèn)。訪問(wèn)的格式如下: 對(duì)象名對(duì)象名.屬性屬性以上面定義以上面定義Customer類為例說(shuō)明屬性的訪問(wèn)類為例說(shuō)明屬性的訪問(wèn)Customer objCustomer = new Customer();objCustomer.CustomerId = “C000001”; /合法合法objCustomer.CustomerName = “騰飛有限責(zé)任公司騰飛有限責(zé)任公司”; /合法合法objCustomer.Address = “上海南京路上海南京路22號(hào)號(hào)”; /非法,因?yàn)榉欠?,因?yàn)?Address屬性是只讀屬性是只讀第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面

25、向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 演示編寫(xiě)程序并運(yùn)行演示編寫(xiě)程序并運(yùn)行8.3.3 實(shí)現(xiàn)應(yīng)用程序?qū)崿F(xiàn)應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂實(shí)踐8-2在學(xué)生成績(jī)管理系統(tǒng)中,需要在課程類在學(xué)生成績(jī)管理系統(tǒng)中,需要在課程類Course的外部的外部實(shí)現(xiàn)對(duì)類中的所有字段進(jìn)行讀實(shí)現(xiàn)對(duì)類中的所有字段進(jìn)行讀/寫(xiě)操作。寫(xiě)操作。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.4 索引器索引器 【課堂案例課堂案例8-3】現(xiàn)有一個(gè)元素個(gè)數(shù)為現(xiàn)有一個(gè)元素個(gè)數(shù)為4的圓類數(shù)組的圓類數(shù)組CircleArray,其中,數(shù)組的元素都是圓類的實(shí)例對(duì)象。,其中,數(shù)組的元素都是圓類的實(shí)例對(duì)象?,F(xiàn)要求給

26、現(xiàn)要求給CircleArray中中4個(gè)對(duì)象元素的半徑成員個(gè)對(duì)象元素的半徑成員radius分別賦以分別賦以1,2,3,4的取值。也就是說(shuō)用的取值。也就是說(shuō)用CircleArray數(shù)組的數(shù)組的4個(gè)元素分別描述半徑為個(gè)元素分別描述半徑為1,2,3,4的的4個(gè)圓。個(gè)圓。【案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】掌握索引器的定義掌握索引器的定義 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】定義索引器定義索引器 【案例完成步驟案例完成步驟】(1)定義索引器)定義索引器 (2)實(shí)現(xiàn)應(yīng)用程序)實(shí)現(xiàn)應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.4.1 初步認(rèn)識(shí)索引器:初步認(rèn)識(shí)索引器:索引器的聲明類似于屬性的聲明,也由g

27、et和set訪問(wèn)器組成。索引器提供了對(duì)類的數(shù)組元素的直接訪問(wèn)功能。即如果一個(gè)類定義了索引器,這個(gè)類的實(shí)例就可以使用數(shù)組訪問(wèn)運(yùn)算符對(duì)數(shù)組元素進(jìn)行訪問(wèn)。索引器的定義與屬性有點(diǎn)類似。 訪問(wèn)修飾符 this int index get Return 集合名index; set . 集合名index = value; 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 說(shuō)明:(1)集合元素類型表示索引器的返回類型(2)this指當(dāng)前對(duì)象,索引器和屬性不同,沒(méi)有專門(mén)的索引器名。對(duì)象名就相當(dāng)于索引器名。(3)集合名index,用于訪問(wèn)各集合元素。(4)index為int類型變量,用于指示集合類型下標(biāo),也可

28、以為其他類型,但一般為int型,index變量名是可以任意命名的,只是編程人員通常用index或ind作為下標(biāo)變量名。(5)set和get訪問(wèn)器及value的功能與屬性基本相同 ,此外不再詳細(xì)介紹。以下代碼說(shuō)明了索引器的定義:Class Circle int index = 0; int radius; /整型數(shù)組 public int thisint ind /定義索引器 get return radiusind; set radiusind = value; 8.4.2 實(shí)現(xiàn)實(shí)現(xiàn)應(yīng)用程序應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 演示應(yīng)用程序編輯、編譯和運(yùn)行過(guò)程第第8章

29、章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂實(shí)踐8-3任務(wù)一任務(wù)一 編寫(xiě)一個(gè)類,要示使用索引器存儲(chǔ)編寫(xiě)一個(gè)類,要示使用索引器存儲(chǔ)100個(gè)整型變量。個(gè)整型變量。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.5 方法重載方法重載【課堂案例課堂案例8-4】在學(xué)生成績(jī)管理系統(tǒng)中,需要實(shí)現(xiàn)如下功在學(xué)生成績(jī)管理系統(tǒng)中,需要實(shí)現(xiàn)如下功能:能: (1)顯示學(xué)生的信息)顯示學(xué)生的信息 (2)根據(jù)年齡顯示學(xué)生的信息)根據(jù)年齡顯示學(xué)生的信息 (3)根據(jù)姓名顯示學(xué)生的信息)根據(jù)姓名顯示學(xué)生的信息 構(gòu)造實(shí)現(xiàn)這些功能的方法原型構(gòu)造實(shí)現(xiàn)這些功能的方法原型【案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】掌握方法的重載掌

30、握方法的重載 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】方法重載方法重載【案例完成步驟案例完成步驟】(1)初步認(rèn)識(shí)重載)初步認(rèn)識(shí)重載(2)構(gòu)造重載方法原型)構(gòu)造重載方法原型第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.5.1 初步認(rèn)識(shí)重載方法初步認(rèn)識(shí)重載方法 重載是面向?qū)ο蟪绦蛟O(shè)計(jì)中的一個(gè)重要特征,通過(guò)重載可以使得重載是面向?qū)ο蟪绦蛟O(shè)計(jì)中的一個(gè)重要特征,通過(guò)重載可以使得在同一個(gè)類中有多個(gè)具有相同功能而參數(shù)不同的方法共享同一個(gè)方在同一個(gè)類中有多個(gè)具有相同功能而參數(shù)不同的方法共享同一個(gè)方法名。在實(shí)際調(diào)用時(shí),根據(jù)方法參數(shù)的個(gè)數(shù)和參數(shù)數(shù)據(jù)類型的不同法名。在實(shí)際調(diào)用時(shí),根據(jù)方法參數(shù)的個(gè)數(shù)和參數(shù)數(shù)據(jù)類型的不

31、同來(lái)區(qū)分調(diào)用的是哪一個(gè)方法。這樣做的優(yōu)點(diǎn)在于可以使程序簡(jiǎn)潔清來(lái)區(qū)分調(diào)用的是哪一個(gè)方法。這樣做的優(yōu)點(diǎn)在于可以使程序簡(jiǎn)潔清晰,同時(shí)也是面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性的一個(gè)表現(xiàn)。晰,同時(shí)也是面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性的一個(gè)表現(xiàn)。 根據(jù)對(duì)根據(jù)對(duì)課堂案例課堂案例8-4的分析可知,雖然顯示學(xué)生信息各有側(cè)重的分析可知,雖然顯示學(xué)生信息各有側(cè)重點(diǎn),但三個(gè)功能都是要求顯示學(xué)生的信息,因此可以使用重載來(lái)實(shí)點(diǎn),但三個(gè)功能都是要求顯示學(xué)生的信息,因此可以使用重載來(lái)實(shí)現(xiàn)。現(xiàn)。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.5.2 構(gòu)造重載方法原型構(gòu)造重載方法原型 根據(jù)重載的定義和要求,對(duì)于根據(jù)重載的定義和要求,對(duì)于課堂案

32、例課堂案例8-4,需要定義的重載方法如需要定義的重載方法如下:下:(1)displayInfo():顯示學(xué)生的信息。:顯示學(xué)生的信息。(2)displayInfo(int stuAge):根據(jù)年齡顯示學(xué)生的信息。:根據(jù)年齡顯示學(xué)生的信息。(3)displayInfo(string stuName):根據(jù)學(xué)生的姓名顯示學(xué)生的信:根據(jù)學(xué)生的姓名顯示學(xué)生的信息。息。 方法重載的規(guī)則:在定義重載的時(shí)候,可以根據(jù)參數(shù)列表的個(gè)數(shù)、類型或順序來(lái)定義重載,例如,displayInfo()、displayInfo(int stuAge)以及displayInfo(string stuName)所帶的參數(shù)類型不同

33、,但不能根據(jù)方法返回值的不同來(lái)定義重載。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂實(shí)踐8-5任務(wù)一任務(wù)一 閱讀下面各組方法,判斷哪些是重載?哪些不是?閱讀下面各組方法,判斷哪些是重載?哪些不是? (1) void display(int); void display(string); (2) void display(int); void display(int ,int ); (3) void display(int ,string); void display(string,int); (4) int display(int); void display(int);

34、任務(wù)二任務(wù)二在學(xué)生成績(jī)管理系統(tǒng)中,現(xiàn)有的成績(jī)類需要實(shí)現(xiàn)如下要求:在學(xué)生成績(jī)管理系統(tǒng)中,現(xiàn)有的成績(jī)類需要實(shí)現(xiàn)如下要求: (1) 顯示所有學(xué)生的成績(jī)信息。顯示所有學(xué)生的成績(jī)信息。 (2) 根據(jù)指定的學(xué)生學(xué)號(hào)顯示該學(xué)生成績(jī)信息。根據(jù)指定的學(xué)生學(xué)號(hào)顯示該學(xué)生成績(jī)信息。 確定要編寫(xiě)的方法。確定要編寫(xiě)的方法。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.6 構(gòu)造函數(shù)構(gòu)造函數(shù) 【課堂案例課堂案例8-5】定義一個(gè)圓(定義一個(gè)圓(Circle)類,該類要)類,該類要求對(duì)圓的半徑求對(duì)圓的半徑(radius)進(jìn)行初始化。即,當(dāng)創(chuàng)建該類的對(duì)象時(shí),)進(jìn)行初始化。即,當(dāng)創(chuàng)建該類的對(duì)象時(shí),對(duì)象的半徑值初始為對(duì)

35、象的半徑值初始為0.0?!景咐龑W(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】定義構(gòu)造函數(shù)定義構(gòu)造函數(shù) 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】構(gòu)造函數(shù)構(gòu)造函數(shù) 【案例完成步驟案例完成步驟】(1)定義構(gòu)造函數(shù))定義構(gòu)造函數(shù) (2)實(shí)現(xiàn)應(yīng)用程序)實(shí)現(xiàn)應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.6.1 定義構(gòu)造函數(shù)定義構(gòu)造函數(shù)在類中,定義構(gòu)造函數(shù)的一般格式為:在類中,定義構(gòu)造函數(shù)的一般格式為:class 類名類名 public 類名(參數(shù)表)類名(參數(shù)表) /構(gòu)造函數(shù)名與類名相同構(gòu)造函數(shù)名與類名相同 在在C#中構(gòu)造函數(shù)與類的名稱相同,能帶參數(shù),但不能返中構(gòu)造函數(shù)與類的名稱相同,能帶參數(shù),但不能返回任何值,即使是

36、回任何值,即使是void,每個(gè)類必須有一個(gè)構(gòu)造函數(shù)。,每個(gè)類必須有一個(gè)構(gòu)造函數(shù)。如果不提供用戶定義的構(gòu)造函數(shù),編譯器會(huì)自動(dòng)生成一如果不提供用戶定義的構(gòu)造函數(shù),編譯器會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù),不過(guò),它實(shí)際上并不會(huì)做任何事情。個(gè)默認(rèn)的構(gòu)造函數(shù),不過(guò),它實(shí)際上并不會(huì)做任何事情。構(gòu)造函數(shù)通常用來(lái)初始化新對(duì)象的數(shù)據(jù)成員。構(gòu)造函數(shù)通常用來(lái)初始化新對(duì)象的數(shù)據(jù)成員。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 通過(guò)分析通過(guò)分析【課堂案例課堂案例8-5】,我們發(fā)現(xiàn)在創(chuàng)建對(duì)象時(shí),需要自動(dòng)對(duì)半徑進(jìn)行初始化,使用,我們發(fā)現(xiàn)在創(chuàng)建對(duì)象時(shí),需要自動(dòng)對(duì)半徑進(jìn)行初始化,使用構(gòu)造函數(shù)可以實(shí)現(xiàn)該要求。定義構(gòu)造函數(shù)的

37、代碼如下:構(gòu)造函數(shù)可以實(shí)現(xiàn)該要求。定義構(gòu)造函數(shù)的代碼如下:class Circle private double radius; /圓半徑,私有類型圓半徑,私有類型 public Circle() /構(gòu)造函數(shù)構(gòu)造函數(shù) radius = 0.0; /初始化半徑值初始化半徑值 說(shuō)明:(1)構(gòu)造函數(shù)通常用public修飾,用protected,private修飾可能導(dǎo)致無(wú)法實(shí)例化。雖然構(gòu)造函數(shù)通常用public修飾但也不能像調(diào)用其他函數(shù)那樣顯式地調(diào)用構(gòu)造函數(shù)。(2)若沒(méi)有構(gòu)造函數(shù),C#會(huì)自動(dòng)調(diào)用默認(rèn)的構(gòu)造函數(shù),形式為:()。 8.6.2 實(shí)現(xiàn)實(shí)現(xiàn)應(yīng)用程序應(yīng)用程序 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向

38、對(duì)象程序設(shè)計(jì)基礎(chǔ) 演示應(yīng)用程序編輯、編譯和運(yùn)行過(guò)程第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂實(shí)踐8-5編寫(xiě)程序:一個(gè)矩形類具有數(shù)據(jù)成員長(zhǎng)(編寫(xiě)程序:一個(gè)矩形類具有數(shù)據(jù)成員長(zhǎng)(length)和)和寬(寬(width),要求使用構(gòu)造函數(shù)將),要求使用構(gòu)造函數(shù)將length和和width設(shè)設(shè)置為置為10,并使用并使用caculate()方法求解矩形面積。方法求解矩形面積。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.7 重載構(gòu)造函數(shù)重載構(gòu)造函數(shù) 【課堂案例課堂案例8-6】閱讀下面的程序,理解構(gòu)造函數(shù)的重載閱讀下面的程序,理解構(gòu)造函數(shù)的重載并預(yù)測(cè)程序的輸出結(jié)果。并預(yù)

39、測(cè)程序的輸出結(jié)果。Class Circle private int radius; public Circle() radius = 0; public Circle(int r) radius = r; public void Print() Console.WriteLine(radius); Class Program static void Main(string args) Circle myCircle = new Circle(); Console.Write(“第一個(gè)圓的半徑值為:第一個(gè)圓的半徑值為:”); myCircle.Print(); Circle myCircle2

40、= new Circle(4); Console.Write(“第二個(gè)圓的半徑值為第二個(gè)圓的半徑值為 ”); myCircle2.Print(); 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 【案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】掌握重載構(gòu)造函數(shù)掌握重載構(gòu)造函數(shù)【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】構(gòu)造函數(shù)構(gòu)造函數(shù)【案例完成步驟案例完成步驟】(1)定義重載的構(gòu)造函數(shù))定義重載的構(gòu)造函數(shù)(2)預(yù)測(cè)程序的輸出結(jié)果)預(yù)測(cè)程序的輸出結(jié)果第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.7.1 定義重載的構(gòu)造函數(shù)定義重載的構(gòu)造函數(shù) 構(gòu)造函數(shù)也屬于類的成員方法,和普通的成員方法一樣構(gòu)造函數(shù)也屬于類的成員方法

41、,和普通的成員方法一樣也可以重載。重載構(gòu)造函數(shù)的目的在于提供多種對(duì)象的也可以重載。重載構(gòu)造函數(shù)的目的在于提供多種對(duì)象的初始化方式,增強(qiáng)編程的靈活性。構(gòu)造函數(shù)重載的形式初始化方式,增強(qiáng)編程的靈活性。構(gòu)造函數(shù)重載的形式與普通方法的重載格式相同。與普通方法的重載格式相同。 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.7.2 預(yù)測(cè)程序的輸出結(jié)果預(yù)測(cè)程序的輸出結(jié)果根據(jù)重載的構(gòu)造函數(shù)的功能,程序的輸出結(jié)果為:根據(jù)重載的構(gòu)造函數(shù)的功能,程序的輸出結(jié)果為:第一個(gè)圓的半徑為:第一個(gè)圓的半徑為:0第二個(gè)圓的半徑為:第二個(gè)圓的半徑為:4第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂

42、實(shí)踐8-6完成下面給出的程序,它能讓用戶實(shí)現(xiàn)以下任務(wù):完成下面給出的程序,它能讓用戶實(shí)現(xiàn)以下任務(wù): 1、初始化時(shí)、分、秒、初始化時(shí)、分、秒 2、按給定的格式顯示時(shí)、時(shí):分或時(shí):分:秒、按給定的格式顯示時(shí)、時(shí):分或時(shí):分:秒Namespace prj8_10 class Time private int hour; private int minute; private int second; class Program static void Main(string args) Time obj = new Time(); obj.display(); obj.setTime(); obj.d

43、isplay(); obj.setTime(5,12); obj.display(); obj.setTime(5,12,13); obj.display(); 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.8 析構(gòu)函數(shù)析構(gòu)函數(shù)【課堂案例課堂案例8-7】閱讀下面的程序,識(shí)別析構(gòu)函數(shù)并閱讀下面的程序,識(shí)別析構(gòu)函數(shù)并預(yù)測(cè)程序的輸出結(jié)果。預(yù)測(cè)程序的輸出結(jié)果。name spaces 8_7 class Circle Circle() /析構(gòu)函數(shù)析構(gòu)函數(shù) Console.WriteLine(“析構(gòu)函數(shù)被調(diào)用析構(gòu)函數(shù)被調(diào)用”); public Circle() /構(gòu)造函數(shù)構(gòu)造函數(shù) Consol

44、e.WriteLine(“構(gòu)造函數(shù)被調(diào)用構(gòu)造函數(shù)被調(diào)用”); class Program satatic void Main(string args) Circle obj = new Circle(); 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 【案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo)】了解析構(gòu)函數(shù)的定義與作用了解析構(gòu)函數(shù)的定義與作用【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】析構(gòu)函數(shù)析構(gòu)函數(shù)【案例完成步驟案例完成步驟】(1)初步認(rèn)識(shí)析構(gòu)函數(shù))初步認(rèn)識(shí)析構(gòu)函數(shù)(2)預(yù)測(cè)程序的輸出結(jié)果)預(yù)測(cè)程序的輸出結(jié)果第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.8.1 初步認(rèn)識(shí)析構(gòu)函數(shù)初步認(rèn)識(shí)析構(gòu)函數(shù) 析構(gòu)函數(shù)

45、與構(gòu)造函數(shù)是相對(duì)的析構(gòu)函數(shù)與構(gòu)造函數(shù)是相對(duì)的,其用途是完成內(nèi)存清理。其用途是完成內(nèi)存清理。在類中僅有一個(gè)析構(gòu)函數(shù)。程序員對(duì)于什么時(shí)候調(diào)用析在類中僅有一個(gè)析構(gòu)函數(shù)。程序員對(duì)于什么時(shí)候調(diào)用析構(gòu)函數(shù)沒(méi)有控權(quán),構(gòu)函數(shù)沒(méi)有控權(quán),.NET框架會(huì)自動(dòng)運(yùn)行析構(gòu)函數(shù),銷(xiāo)毀框架會(huì)自動(dòng)運(yùn)行析構(gòu)函數(shù),銷(xiāo)毀在內(nèi)存中的對(duì)象。在內(nèi)存中的對(duì)象。 析構(gòu)函數(shù)的名字與類的名字相同析構(gòu)函數(shù)的名字與類的名字相同,但有一個(gè)前綴但有一個(gè)前綴”.定義格式如下定義格式如下:class 類名類名 public 類名類名() /定義析構(gòu)函數(shù)定義析構(gòu)函數(shù) 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.8.2 預(yù)測(cè)程序的輸出預(yù)測(cè)程序的輸出

46、 結(jié)果結(jié)果根據(jù)析構(gòu)函數(shù)的功能根據(jù)析構(gòu)函數(shù)的功能,課堂案例課堂案例8-7的輸出結(jié)果為:的輸出結(jié)果為:構(gòu)造函數(shù)被調(diào)用構(gòu)造函數(shù)被調(diào)用析構(gòu)函數(shù)被調(diào)用析構(gòu)函數(shù)被調(diào)用第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 課堂實(shí)踐課堂實(shí)踐8-7閱讀下面的程序閱讀下面的程序,識(shí)別析構(gòu)函數(shù)并預(yù)測(cè)程序的輸出結(jié)果。識(shí)別析構(gòu)函數(shù)并預(yù)測(cè)程序的輸出結(jié)果。namespace prj8_7 class Circle double radius; const double PI=3.14; public Circle() radius = 0; Console.WriteLine(“構(gòu)造函數(shù)被調(diào)用構(gòu)造函數(shù)被調(diào)用”); Circ

47、le() Console.WriteLine(“析構(gòu)函數(shù)被調(diào)用析構(gòu)函數(shù)被調(diào)用”); public double calculateArea() return PI*radius*radius; class Program static void main(string args) double area; Circle obj = new Circle(); area = obj.caculateArea(); Console.WriteLine(“圓的面積為:圓的面積為:0”,area); 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.9 靜態(tài)類靜態(tài)類靜態(tài)類靜態(tài)類 當(dāng)在類聲明中添

48、加當(dāng)在類聲明中添加static修飾符時(shí),該類稱為靜態(tài)類。對(duì)修飾符時(shí),該類稱為靜態(tài)類。對(duì)于靜態(tài)類,于靜態(tài)類,用戶不必創(chuàng)建該類的實(shí)例對(duì)象就可以訪問(wèn)類中的數(shù)據(jù)和用戶不必創(chuàng)建該類的實(shí)例對(duì)象就可以訪問(wèn)類中的數(shù)據(jù)和方法成員。方法成員。靜態(tài)類的定義格式如下:靜態(tài)類的定義格式如下:static class 類名類名 /類定義類定義第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 以StudentInfo類為例,下面的代碼解釋了靜態(tài)類的定義。 static class StudentInfo public static string GetStudentName() /定義靜態(tài)方法 public stati

49、c string GetStudentAddress() /定義靜態(tài)方法 靜態(tài)類的使用規(guī)則:、靜態(tài)類只能包含靜態(tài)成員。、靜態(tài)類不能被實(shí)例化。、靜態(tài)類不能包含實(shí)例構(gòu)造函數(shù),但可聲明靜態(tài)構(gòu)造函數(shù)用以分配初始值或設(shè)置某個(gè)靜態(tài)狀態(tài)。第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) 8.10 靜態(tài)成員靜態(tài)成員【課堂案例課堂案例8-8】閱讀下面的程序,識(shí)別靜態(tài)成員并預(yù)測(cè)閱讀下面的程序,識(shí)別靜態(tài)成員并預(yù)測(cè)程序的輸出結(jié)果程序的輸出結(jié)果。namespace prj8_8 class Item private static int itemQty; private int itemId; private st

50、ring itemName; private double price; private int qtyOh; public Item(int itemId,string itemName,double Price,int qtyOh) itemQty+; this.itemId = itemId; this.itemName = itemName; this.price = price; this.qtyOh = qtyOh; public static int getItemQty() return itemQty; public void display() Console.Write(

51、“商品編號(hào):商品編號(hào):” + itemId.ToString(); Console.Write(“,商品名稱:,商品名稱:” + itemName); Console.Write(“,商品單價(jià):,商品單價(jià):” + price.ToString(); Console.Write(“,現(xiàn)有數(shù)量:,現(xiàn)有數(shù)量:” + qtyOh.ToString() + n); 第第8章章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ) class Program static void Main(string args) int total; Item item1 = new Item(1,”旺旺餅干旺旺餅干”,1.6,3); item1.display(); Item item2 = new Item(2,”威維豆奶威維豆奶”,25,3);

溫馨提示

  • 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)論