版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C#程序設計案例教程程序設計案例教程第第8章章 面向對象程序設計基礎面向對象程序設計基礎 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 學習目標學習目標了解面向對象概念。了解面向對象概念。掌握類的定義和使用。掌握類的定義和使用。掌握對象的使用。掌握對象的使用。掌握屬性的使用。掌握屬性的使用。了解索引器。了解索引器。掌握方法的重載。掌握方法的重載。熟悉構造函數(shù)的使用和重載。熟悉構造函數(shù)的使用和重載。熟悉析構函數(shù)的使用。熟悉析構函數(shù)的使用。掌握靜態(tài)類和靜態(tài)成員的使用。掌握靜態(tài)類和靜態(tài)成員的使用。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.1 面向對象程序設計概述面向對象程序設
2、計概述8.1.1 對象對象對象是面向對象的程序設計中涉及的核心概念。它代對象是面向對象的程序設計中涉及的核心概念。它代表著真實世界中一個實體或概念。例如,汽車、公司表著真實世界中一個實體或概念。例如,汽車、公司等都可以建模成對象。等都可以建模成對象。對象具有狀態(tài)、行為和身份。例如:現(xiàn)實中我們用唯對象具有狀態(tài)、行為和身份。例如:現(xiàn)實中我們用唯一的車牌號來標識這臺汽車的身份。一的車牌號來標識這臺汽車的身份。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.1.2 類類類是對對象進行分類的聲明,是人們對客觀對象的不類是對對象進行分類的聲明,是人們對客觀對象的不斷認識而抽象出來的概念。斷認識而
3、抽象出來的概念。類和對象具有不同的概念。類定義對象的類型,是基類和對象具有不同的概念。類定義對象的類型,是基于對象的抽象,但它不是對象本身。于對象的抽象,但它不是對象本身。在在C#中,根據(jù)類的來源可分為系統(tǒng)類和自定義類。系中,根據(jù)類的來源可分為系統(tǒng)類和自定義類。系統(tǒng)類是由系統(tǒng)預先定義在統(tǒng)類是由系統(tǒng)預先定義在.NET框架類庫中。自定義類框架類庫中。自定義類則是由程序員根據(jù)系統(tǒng)開發(fā)的需要而創(chuàng)建的類。則是由程序員根據(jù)系統(tǒng)開發(fā)的需要而創(chuàng)建的類。類在本質上是一種數(shù)據(jù)類型,所以類的用法和基本數(shù)類在本質上是一種數(shù)據(jù)類型,所以類的用法和基本數(shù)據(jù)類型的用法基本相同。據(jù)類型的用法基本相同。第第8章章 面向對象程序
4、設計基礎面向對象程序設計基礎 8.1.3 消息和方法消息和方法在面向對象的程序設計中,對象不是獨立存在的,對在面向對象的程序設計中,對象不是獨立存在的,對象之間要進行交互,交互通過消息發(fā)生。象之間要進行交互,交互通過消息發(fā)生。行為(在面向對象的程序設計中,又稱行為(在面向對象的程序設計中,又稱“方法方法”),),根據(jù)根據(jù)Grady Booch的定義:行為是對象根據(jù)其狀態(tài)的的定義:行為是對象根據(jù)其狀態(tài)的更改和消息的傳遞進行的作用和反作用。更改和消息的傳遞進行的作用和反作用。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.1.4 類的封裝性類的封裝性在面向對象的程序設計中,在面向對象的程
5、序設計中,“封裝封裝”就是隱藏了類的就是隱藏了類的實現(xiàn)細節(jié),程序員在使用類時,只要知道該類公有成實現(xiàn)細節(jié),程序員在使用類時,只要知道該類公有成員的功能并執(zhí)行相關的操作,而不需要知道該類公有員的功能并執(zhí)行相關的操作,而不需要知道該類公有成員是如何實現(xiàn)的。成員是如何實現(xiàn)的。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2 對象對象 【課堂案例課堂案例8-1】在學生成績管理系統(tǒng)中,需要對學生的基本信息進在學生成績管理系統(tǒng)中,需要對學生的基本信息進行管理,現(xiàn)要求使用面向對象的方法接收學生信息并顯示。一個學生行管理,現(xiàn)要求使用面向對象的方法接收學生信息并顯示。一個學生的基本信息包括:學號、姓
6、名、出生年月、性別、入學時間、所在班的基本信息包括:學號、姓名、出生年月、性別、入學時間、所在班級、家庭住址、聯(lián)系電話、手機以及備注。級、家庭住址、聯(lián)系電話、手機以及備注?!景咐龑W習目標案例學習目標】掌握類及成員的使用掌握類及成員的使用掌握訪問修飾符的使用掌握訪問修飾符的使用掌握對象的創(chuàng)建和訪問掌握對象的創(chuàng)建和訪問【案例知識要點案例知識要點】類的定義、字段、方法的定義、創(chuàng)建對象類的定義、字段、方法的定義、創(chuàng)建對象【案例完成步驟案例完成步驟】(1)定義類)定義類(2)定義類的成員字段)定義類的成員字段(3)定義類的成員方法)定義類的成員方法(4)加載訪問修飾符)加載訪問修飾符(5)創(chuàng)建對象并訪問
7、對象成員)創(chuàng)建對象并訪問對象成員(6)實現(xiàn)應用程序)實現(xiàn)應用程序第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2.1 定義類定義類 在在C#中,定義類需要使用關鍵字中,定義類需要使用關鍵字Class,類定義的格式如下:,類定義的格式如下: class 類名類名 /類成員類成員 說明:說明:(1)類名必須是合法的)類名必須是合法的C#命名命名(2)“類成員類成員”包括類中所有的數(shù)據(jù)以及對數(shù)據(jù)的操作,如字段、包括類中所有的數(shù)據(jù)以及對數(shù)據(jù)的操作,如字段、屬屬 性、方法和構造函數(shù)等。性、方法和構造函數(shù)等。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2.2 定義定義類的成員字
8、段類的成員字段 字段是類的成員之一。定義字段的方法和之前定義變量的方法相同。字段是類的成員之一。定義字段的方法和之前定義變量的方法相同。 例如:例如:String sStuNumber; /定義學號字段定義學號字段 String sStuName; /定義姓名字段定義姓名字段第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2.3 定義定義類的成員方法類的成員方法 方法也是類的成員之一,其實質就是在類中聲明函數(shù),為類的對象提方法也是類的成員之一,其實質就是在類中聲明函數(shù),為類的對象提供行為。方法遵循先定義后使用的規(guī)則,在供行為。方法遵循先定義后使用的規(guī)則,在C#中方法必須放在類定中方法
9、必須放在類定義中聲明,即方法必須是某一個類的類成員。義中聲明,即方法必須是某一個類的類成員。 1、聲明方法,格式如下:、聲明方法,格式如下: 方法修飾符方法修飾符 返回類型返回類型 方法名方法名 (參數(shù)列表參數(shù)列表) /方法體方法體 (1)“方法修飾符方法修飾符”包括訪問修飾符(如包括訪問修飾符(如Public 、private、protected)、靜態(tài)()、靜態(tài)(Static)修飾符、虛方法()修飾符、虛方法(Virtual)、抽象)、抽象(abstract)修飾符等。)修飾符等。 (2) “返回類型返回類型”表示一個方法結果的數(shù)據(jù)類型,可以是任何合法的表示一個方法結果的數(shù)據(jù)類型,可以是任
10、何合法的C#數(shù)據(jù)類型。類的方法將執(zhí)行的結果作為返回值返回給調用者。如數(shù)據(jù)類型。類的方法將執(zhí)行的結果作為返回值返回給調用者。如果一個方法不返回任何值,它的返回類型用空類型(果一個方法不返回任何值,它的返回類型用空類型(void)表示。)表示。 (3) “方法名方法名”是一個合法的是一個合法的C#語言標識符,對方法的命名,通常要語言標識符,對方法的命名,通常要求能描述方法的功能。求能描述方法的功能。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 (4) “參數(shù)列表參數(shù)列表”說明一個方法所需要的參數(shù),即傳遞給方法的數(shù)據(jù)值。說明一個方法所需要的參數(shù),即傳遞給方法的數(shù)據(jù)值。每個參數(shù)都有參數(shù)類型和
11、參數(shù)名。每個參數(shù)都有參數(shù)類型和參數(shù)名。 (5)方法體中的語句定義了該方法所執(zhí)行的任務。方法體中的語句定義了該方法所執(zhí)行的任務。 2.調用類的成員方法調用類的成員方法 聲明方法后,我們就可以開始調用方法了。對于調用方法,根據(jù)調用聲明方法后,我們就可以開始調用方法了。對于調用方法,根據(jù)調用的環(huán)境的環(huán)境不同,大致可以分成兩種方式:不同,大致可以分成兩種方式: (1) 如果在聲明方法的類定義中調用該方法,調用方法的格式:如果在聲明方法的類定義中調用該方法,調用方法的格式: 方法名(參數(shù)列表)方法名(參數(shù)列表) (2) 如果在方法聲明的類定義外調用該方法,則需通過創(chuàng)建對象的方如果在方法聲明的類定義外調用
12、該方法,則需通過創(chuàng)建對象的方式,調用式,調用 方法的格式為:方法的格式為: 對象名對象名.方法名(參數(shù)列表)方法名(參數(shù)列表) 提示提示:根據(jù):根據(jù)課堂案例課堂案例8-1的要求,要實現(xiàn)接收學生的信息并顯示,因此需要的要求,要實現(xiàn)接收學生的信息并顯示,因此需要定義兩個成員方法定義兩個成員方法Accept()和和Display()。Accept()用于接收學生的基本信息,用于接收學生的基本信息,Display()用于顯示學生的基本信息。用于顯示學生的基本信息。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2.4 加載加載訪問修飾符訪問修飾符 C#中提供了許多訪問控制符,它們確定了是否允
13、許其他代碼對類的某個特定中提供了許多訪問控制符,它們確定了是否允許其他代碼對類的某個特定成員進行訪問。通過訪問修飾符,成員進行訪問。通過訪問修飾符, C#能實現(xiàn)面向對象的程序設計中的一個能實現(xiàn)面向對象的程序設計中的一個最重要的特征最重要的特征封裝性封裝性 。C#中最常用的訪問修飾符及其含義見表中最常用的訪問修飾符及其含義見表8-1。 表表8-1 訪問修飾符訪問修飾符聲明的可訪問性聲明的可訪問性含含 義義public(公有的公有的)訪問不受限制訪問不受限制protected(受保護的受保護的)訪問僅限于包含類或從包含類派訪問僅限于包含類或從包含類派生的類型生的類型Internal(內(nèi)部的內(nèi)部的)
14、訪問僅限于當前程序集訪問僅限于當前程序集Protected internal(受保護內(nèi)部受保護內(nèi)部的的)訪問僅限于從包含類派生的當前訪問僅限于從包含類派生的當前程序集或類型。程序集或類型。private (私有的)(私有的) 訪問僅限于包含類型。訪問僅限于包含類型。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.2.5 創(chuàng)建對象并訪問對象成員創(chuàng)建對象并訪問對象成員1.創(chuàng)建對象創(chuàng)建對象 類的定義完成后,接下來就是創(chuàng)建對象,只有通過對象類的定義完成后,接下來就是創(chuàng)建對象,只有通過對象才能訪問類的成員。才能訪問類的成員?!皠?chuàng)建對象創(chuàng)建對象”也就是常說的也就是常說的“對象實對象實例化例化”
15、,對象實例化是指在定義對象時,使對象具有相應,對象實例化是指在定義對象時,使對象具有相應的存儲空間用來存儲對象的信息。對象實例化時占用的空的存儲空間用來存儲對象的信息。對象實例化時占用的空間主要是數(shù)據(jù)成員需要的內(nèi)存空間。用關鍵字間主要是數(shù)據(jù)成員需要的內(nèi)存空間。用關鍵字new創(chuàng)建對創(chuàng)建對象。象。 格式一格式一: ; /先聲明對象先聲明對象 對象名對象名 = new 類名;類名; /再創(chuàng)建對象再創(chuàng)建對象 格式二格式二: = new ; /邊聲明邊創(chuàng)建邊聲明邊創(chuàng)建 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 例如,對案例中定義的學生類例如,對案例中定義的學生類Student,現(xiàn)要創(chuàng)建該類的
16、實例對象,現(xiàn)要創(chuàng)建該類的實例對象stuOne。創(chuàng)建的代碼格式如下所示:。創(chuàng)建的代碼格式如下所示: 格式一格式一 Student stuOne; /先聲明對象先聲明對象 stuOne = new Student(); /再創(chuàng)建對象再創(chuàng)建對象 格式二格式二 Student stuOne = new Student(); /邊聲明邊創(chuàng)建邊聲明邊創(chuàng)建 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 2. 訪問對象訪問對象 創(chuàng)建對象的目的是要通過對象來訪問類的成員。訪問對象實質上就是創(chuàng)建對象的目的是要通過對象來訪問類的成員。訪問對象實質上就是訪問對象成員,通過對象訪問成員的方式是使用成員運算符訪問
17、對象成員,通過對象訪問成員的方式是使用成員運算符“.”。 例如:例如: stuOne.Display(); /訪問成員方法訪問成員方法 stuOne.Accept(); /訪問對象的方法成員訪問對象的方法成員 stuOne. sStuNumber = “001”; /為該對象的學號成員賦值為該對象的學號成員賦值 stuOne. sStuName = “張三張三”; /為該對象的姓名字段成員賦值為該對象的姓名字段成員賦值 8.2.6 實現(xiàn)應用程序實現(xiàn)應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 演示應用程序編輯、編譯和運行過程第第8章章 面向對象程序設計基礎面向對象程序設計基礎
18、 課堂實踐課堂實踐8-1任務一任務一在學生管理系統(tǒng)中,除了需要管理學生信息外,還需要對開設在學生管理系統(tǒng)中,除了需要管理學生信息外,還需要對開設的課程進行管理,請編寫程序實現(xiàn)對課程信息的接收與顯示。課程的的課程進行管理,請編寫程序實現(xiàn)對課程信息的接收與顯示。課程的相關信息包括,課程編號、課程名稱、學時、考核方式以及任課教師。相關信息包括,課程編號、課程名稱、學時、考核方式以及任課教師。 任務二任務二定義一個數(shù)學類,該類提供了如下幾種功能:定義一個數(shù)學類,該類提供了如下幾種功能:1、輸出、輸出1100之之間的整數(shù)之和間的整數(shù)之和 2、對隨機輸入的數(shù),求其平方根。、對隨機輸入的數(shù),求其平方根。 第
19、第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.3 屬性屬性 【課堂案例課堂案例8-2】在學生管理系統(tǒng)中,現(xiàn)要求能在在學生管理系統(tǒng)中,現(xiàn)要求能在Student類類的外部實現(xiàn)對該類中的學號(的外部實現(xiàn)對該類中的學號(sStuNumber)、姓名)、姓名(sStuName)字段進行讀)字段進行讀/寫操作,而對于性別寫操作,而對于性別(sGender)字段,在類外只允許進行讀操作。)字段,在類外只允許進行讀操作?!景咐龑W習目標案例學習目標】掌握屬性的聲明掌握屬性的聲明 【案例知識要點案例知識要點】聲明屬性聲明屬性 【案例完成步驟案例完成步驟】(1)確實對字段的讀)確實對字段的讀/寫方式寫方式
20、 (2)聲明屬性)聲明屬性 (3)實現(xiàn)應用程序)實現(xiàn)應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.3.1 聲明屬性聲明屬性 在類定義外部,是不允許對私有或受保護字段在類定義外部,是不允許對私有或受保護字段進行訪問。但如果在程序實現(xiàn)過程中需要在類外進行訪問。但如果在程序實現(xiàn)過程中需要在類外對此類字段進行訪問,又該如何實現(xiàn)呢?對此類字段進行訪問,又該如何實現(xiàn)呢? 答案是:通過屬性可以設置對字段的訪問方式,答案是:通過屬性可以設置對字段的訪問方式,如只讀、只寫、讀如只讀、只寫、讀/寫等。寫等。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 聲明屬性的語法格式如下:聲明屬性
21、的語法格式如下: 訪問修飾符訪問修飾符 類型類型 屬性名屬性名 get return 字段名;字段名; /讀字段值讀字段值 set字段名字段名 = value; /將值寫入字段將值寫入字段 通過通過get、set關鍵字,我們可以將屬性聲明為可讀可寫、只讀、或只關鍵字,我們可以將屬性聲明為可讀可寫、只讀、或只寫屬性。其中寫屬性。其中get設置屬性為可讀,而設置屬性為可讀,而set設置屬性為可寫。設置屬性為可寫。 在屬性聲明中,在屬性聲明中,get完成數(shù)據(jù)值的讀取完成數(shù)據(jù)值的讀取,return返回讀取的值返回讀取的值,set完成對完成對數(shù)據(jù)值的修改數(shù)據(jù)值的修改,value是一個關鍵字是一個關鍵字,
22、表示要寫入數(shù)據(jù)成員的值。表示要寫入數(shù)據(jù)成員的值。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 例如:要設置客戶例如:要設置客戶Customer類中的類中的customerId、customerName字段字段為讀寫,為讀寫,address為只讀,代碼如下:為只讀,代碼如下:Class Customer private string customerId; private string customerName; private string address; public string CustomerId /對應對應customerId get return customerId;
23、set customerId = value; public string CustomerName /對應對應customerName get return customerName; set customerName = value; public string Address /對應對應address get return address; 第第8章章 面向對象程序設計基礎面向對象程序設計基礎8.3.2 訪問屬性:訪問屬性:對屬性進行聲明后,就可以訪問屬性了。訪問屬性與訪問類的公有數(shù)據(jù)對屬性進行聲明后,就可以訪問屬性了。訪問屬性與訪問類的公有數(shù)據(jù)成員一樣,也是通過成員運算符進行訪問。訪問
24、的格式如下:成員一樣,也是通過成員運算符進行訪問。訪問的格式如下: 對象名對象名.屬性屬性以上面定義以上面定義Customer類為例說明屬性的訪問類為例說明屬性的訪問Customer objCustomer = new Customer();objCustomer.CustomerId = “C000001”; /合法合法objCustomer.CustomerName = “騰飛有限責任公司騰飛有限責任公司”; /合法合法objCustomer.Address = “上海南京路上海南京路22號號”; /非法,因為非法,因為 Address屬性是只讀屬性是只讀第第8章章 面向對象程序設計基礎面
25、向對象程序設計基礎 演示編寫程序并運行演示編寫程序并運行8.3.3 實現(xiàn)應用程序實現(xiàn)應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂實踐8-2在學生成績管理系統(tǒng)中,需要在課程類在學生成績管理系統(tǒng)中,需要在課程類Course的外部的外部實現(xiàn)對類中的所有字段進行讀實現(xiàn)對類中的所有字段進行讀/寫操作。寫操作。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.4 索引器索引器 【課堂案例課堂案例8-3】現(xiàn)有一個元素個數(shù)為現(xiàn)有一個元素個數(shù)為4的圓類數(shù)組的圓類數(shù)組CircleArray,其中,數(shù)組的元素都是圓類的實例對象。,其中,數(shù)組的元素都是圓類的實例對象?,F(xiàn)要求給
26、現(xiàn)要求給CircleArray中中4個對象元素的半徑成員個對象元素的半徑成員radius分別賦以分別賦以1,2,3,4的取值。也就是說用的取值。也就是說用CircleArray數(shù)組的數(shù)組的4個元素分別描述半徑為個元素分別描述半徑為1,2,3,4的的4個圓。個圓。【案例學習目標案例學習目標】掌握索引器的定義掌握索引器的定義 【案例知識要點案例知識要點】定義索引器定義索引器 【案例完成步驟案例完成步驟】(1)定義索引器)定義索引器 (2)實現(xiàn)應用程序)實現(xiàn)應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.4.1 初步認識索引器:初步認識索引器:索引器的聲明類似于屬性的聲明,也由g
27、et和set訪問器組成。索引器提供了對類的數(shù)組元素的直接訪問功能。即如果一個類定義了索引器,這個類的實例就可以使用數(shù)組訪問運算符對數(shù)組元素進行訪問。索引器的定義與屬性有點類似。 訪問修飾符 this int index get Return 集合名index; set . 集合名index = value; 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 說明:(1)集合元素類型表示索引器的返回類型(2)this指當前對象,索引器和屬性不同,沒有專門的索引器名。對象名就相當于索引器名。(3)集合名index,用于訪問各集合元素。(4)index為int類型變量,用于指示集合類型下標,也可
28、以為其他類型,但一般為int型,index變量名是可以任意命名的,只是編程人員通常用index或ind作為下標變量名。(5)set和get訪問器及value的功能與屬性基本相同 ,此外不再詳細介紹。以下代碼說明了索引器的定義:Class Circle int index = 0; int radius; /整型數(shù)組 public int thisint ind /定義索引器 get return radiusind; set radiusind = value; 8.4.2 實現(xiàn)實現(xiàn)應用程序應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 演示應用程序編輯、編譯和運行過程第第8章
29、章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂實踐8-3任務一任務一 編寫一個類,要示使用索引器存儲編寫一個類,要示使用索引器存儲100個整型變量。個整型變量。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.5 方法重載方法重載【課堂案例課堂案例8-4】在學生成績管理系統(tǒng)中,需要實現(xiàn)如下功在學生成績管理系統(tǒng)中,需要實現(xiàn)如下功能:能: (1)顯示學生的信息)顯示學生的信息 (2)根據(jù)年齡顯示學生的信息)根據(jù)年齡顯示學生的信息 (3)根據(jù)姓名顯示學生的信息)根據(jù)姓名顯示學生的信息 構造實現(xiàn)這些功能的方法原型構造實現(xiàn)這些功能的方法原型【案例學習目標案例學習目標】掌握方法的重載掌
30、握方法的重載 【案例知識要點案例知識要點】方法重載方法重載【案例完成步驟案例完成步驟】(1)初步認識重載)初步認識重載(2)構造重載方法原型)構造重載方法原型第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.5.1 初步認識重載方法初步認識重載方法 重載是面向對象程序設計中的一個重要特征,通過重載可以使得重載是面向對象程序設計中的一個重要特征,通過重載可以使得在同一個類中有多個具有相同功能而參數(shù)不同的方法共享同一個方在同一個類中有多個具有相同功能而參數(shù)不同的方法共享同一個方法名。在實際調用時,根據(jù)方法參數(shù)的個數(shù)和參數(shù)數(shù)據(jù)類型的不同法名。在實際調用時,根據(jù)方法參數(shù)的個數(shù)和參數(shù)數(shù)據(jù)類型的不
31、同來區(qū)分調用的是哪一個方法。這樣做的優(yōu)點在于可以使程序簡潔清來區(qū)分調用的是哪一個方法。這樣做的優(yōu)點在于可以使程序簡潔清晰,同時也是面向對象程序設計多態(tài)性的一個表現(xiàn)。晰,同時也是面向對象程序設計多態(tài)性的一個表現(xiàn)。 根據(jù)對根據(jù)對課堂案例課堂案例8-4的分析可知,雖然顯示學生信息各有側重的分析可知,雖然顯示學生信息各有側重點,但三個功能都是要求顯示學生的信息,因此可以使用重載來實點,但三個功能都是要求顯示學生的信息,因此可以使用重載來實現(xiàn)。現(xiàn)。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.5.2 構造重載方法原型構造重載方法原型 根據(jù)重載的定義和要求,對于根據(jù)重載的定義和要求,對于課堂案
32、例課堂案例8-4,需要定義的重載方法如需要定義的重載方法如下:下:(1)displayInfo():顯示學生的信息。:顯示學生的信息。(2)displayInfo(int stuAge):根據(jù)年齡顯示學生的信息。:根據(jù)年齡顯示學生的信息。(3)displayInfo(string stuName):根據(jù)學生的姓名顯示學生的信:根據(jù)學生的姓名顯示學生的信息。息。 方法重載的規(guī)則:在定義重載的時候,可以根據(jù)參數(shù)列表的個數(shù)、類型或順序來定義重載,例如,displayInfo()、displayInfo(int stuAge)以及displayInfo(string stuName)所帶的參數(shù)類型不同
33、,但不能根據(jù)方法返回值的不同來定義重載。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂實踐8-5任務一任務一 閱讀下面各組方法,判斷哪些是重載?哪些不是?閱讀下面各組方法,判斷哪些是重載?哪些不是? (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、任務二任務二在學生成績管理系統(tǒng)中,現(xiàn)有的成績類需要實現(xiàn)如下要求:在學生成績管理系統(tǒng)中,現(xiàn)有的成績類需要實現(xiàn)如下要求: (1) 顯示所有學生的成績信息。顯示所有學生的成績信息。 (2) 根據(jù)指定的學生學號顯示該學生成績信息。根據(jù)指定的學生學號顯示該學生成績信息。 確定要編寫的方法。確定要編寫的方法。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.6 構造函數(shù)構造函數(shù) 【課堂案例課堂案例8-5】定義一個圓(定義一個圓(Circle)類,該類要)類,該類要求對圓的半徑求對圓的半徑(radius)進行初始化。即,當創(chuàng)建該類的對象時,)進行初始化。即,當創(chuàng)建該類的對象時,對象的半徑值初始為對
35、象的半徑值初始為0.0。【案例學習目標案例學習目標】定義構造函數(shù)定義構造函數(shù) 【案例知識要點案例知識要點】構造函數(shù)構造函數(shù) 【案例完成步驟案例完成步驟】(1)定義構造函數(shù))定義構造函數(shù) (2)實現(xiàn)應用程序)實現(xiàn)應用程序 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.6.1 定義構造函數(shù)定義構造函數(shù)在類中,定義構造函數(shù)的一般格式為:在類中,定義構造函數(shù)的一般格式為:class 類名類名 public 類名(參數(shù)表)類名(參數(shù)表) /構造函數(shù)名與類名相同構造函數(shù)名與類名相同 在在C#中構造函數(shù)與類的名稱相同,能帶參數(shù),但不能返中構造函數(shù)與類的名稱相同,能帶參數(shù),但不能返回任何值,即使是
36、回任何值,即使是void,每個類必須有一個構造函數(shù)。,每個類必須有一個構造函數(shù)。如果不提供用戶定義的構造函數(shù),編譯器會自動生成一如果不提供用戶定義的構造函數(shù),編譯器會自動生成一個默認的構造函數(shù),不過,它實際上并不會做任何事情。個默認的構造函數(shù),不過,它實際上并不會做任何事情。構造函數(shù)通常用來初始化新對象的數(shù)據(jù)成員。構造函數(shù)通常用來初始化新對象的數(shù)據(jù)成員。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 通過分析通過分析【課堂案例課堂案例8-5】,我們發(fā)現(xiàn)在創(chuàng)建對象時,需要自動對半徑進行初始化,使用,我們發(fā)現(xiàn)在創(chuàng)建對象時,需要自動對半徑進行初始化,使用構造函數(shù)可以實現(xiàn)該要求。定義構造函數(shù)的
37、代碼如下:構造函數(shù)可以實現(xiàn)該要求。定義構造函數(shù)的代碼如下:class Circle private double radius; /圓半徑,私有類型圓半徑,私有類型 public Circle() /構造函數(shù)構造函數(shù) radius = 0.0; /初始化半徑值初始化半徑值 說明:(1)構造函數(shù)通常用public修飾,用protected,private修飾可能導致無法實例化。雖然構造函數(shù)通常用public修飾但也不能像調用其他函數(shù)那樣顯式地調用構造函數(shù)。(2)若沒有構造函數(shù),C#會自動調用默認的構造函數(shù),形式為:()。 8.6.2 實現(xiàn)實現(xiàn)應用程序應用程序 第第8章章 面向對象程序設計基礎面向
38、對象程序設計基礎 演示應用程序編輯、編譯和運行過程第第8章章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂實踐8-5編寫程序:一個矩形類具有數(shù)據(jù)成員長(編寫程序:一個矩形類具有數(shù)據(jù)成員長(length)和)和寬(寬(width),要求使用構造函數(shù)將),要求使用構造函數(shù)將length和和width設設置為置為10,并使用并使用caculate()方法求解矩形面積。方法求解矩形面積。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.7 重載構造函數(shù)重載構造函數(shù) 【課堂案例課堂案例8-6】閱讀下面的程序,理解構造函數(shù)的重載閱讀下面的程序,理解構造函數(shù)的重載并預測程序的輸出結果。并預
39、測程序的輸出結果。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(“第一個圓的半徑值為:第一個圓的半徑值為:”); myCircle.Print(); Circle myCircle2
40、= new Circle(4); Console.Write(“第二個圓的半徑值為第二個圓的半徑值為 ”); myCircle2.Print(); 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 【案例學習目標案例學習目標】掌握重載構造函數(shù)掌握重載構造函數(shù)【案例知識要點案例知識要點】構造函數(shù)構造函數(shù)【案例完成步驟案例完成步驟】(1)定義重載的構造函數(shù))定義重載的構造函數(shù)(2)預測程序的輸出結果)預測程序的輸出結果第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.7.1 定義重載的構造函數(shù)定義重載的構造函數(shù) 構造函數(shù)也屬于類的成員方法,和普通的成員方法一樣構造函數(shù)也屬于類的成員方法
41、,和普通的成員方法一樣也可以重載。重載構造函數(shù)的目的在于提供多種對象的也可以重載。重載構造函數(shù)的目的在于提供多種對象的初始化方式,增強編程的靈活性。構造函數(shù)重載的形式初始化方式,增強編程的靈活性。構造函數(shù)重載的形式與普通方法的重載格式相同。與普通方法的重載格式相同。 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.7.2 預測程序的輸出結果預測程序的輸出結果根據(jù)重載的構造函數(shù)的功能,程序的輸出結果為:根據(jù)重載的構造函數(shù)的功能,程序的輸出結果為:第一個圓的半徑為:第一個圓的半徑為:0第二個圓的半徑為:第二個圓的半徑為:4第第8章章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂
42、實踐8-6完成下面給出的程序,它能讓用戶實現(xiàn)以下任務:完成下面給出的程序,它能讓用戶實現(xiàn)以下任務: 1、初始化時、分、秒、初始化時、分、秒 2、按給定的格式顯示時、時:分或時:分:秒、按給定的格式顯示時、時:分或時:分:秒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章章 面向對象程序設計基礎面向對象程序設計基礎 8.8 析構函數(shù)析構函數(shù)【課堂案例課堂案例8-7】閱讀下面的程序,識別析構函數(shù)并閱讀下面的程序,識別析構函數(shù)并預測程序的輸出結果。預測程序的輸出結果。name spaces 8_7 class Circle Circle() /析構函數(shù)析構函數(shù) Console.WriteLine(“析構函數(shù)被調用析構函數(shù)被調用”); public Circle() /構造函數(shù)構造函數(shù) Consol
44、e.WriteLine(“構造函數(shù)被調用構造函數(shù)被調用”); class Program satatic void Main(string args) Circle obj = new Circle(); 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 【案例學習目標案例學習目標】了解析構函數(shù)的定義與作用了解析構函數(shù)的定義與作用【案例知識要點案例知識要點】析構函數(shù)析構函數(shù)【案例完成步驟案例完成步驟】(1)初步認識析構函數(shù))初步認識析構函數(shù)(2)預測程序的輸出結果)預測程序的輸出結果第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.8.1 初步認識析構函數(shù)初步認識析構函數(shù) 析構函數(shù)
45、與構造函數(shù)是相對的析構函數(shù)與構造函數(shù)是相對的,其用途是完成內(nèi)存清理。其用途是完成內(nèi)存清理。在類中僅有一個析構函數(shù)。程序員對于什么時候調用析在類中僅有一個析構函數(shù)。程序員對于什么時候調用析構函數(shù)沒有控權,構函數(shù)沒有控權,.NET框架會自動運行析構函數(shù),銷毀框架會自動運行析構函數(shù),銷毀在內(nèi)存中的對象。在內(nèi)存中的對象。 析構函數(shù)的名字與類的名字相同析構函數(shù)的名字與類的名字相同,但有一個前綴但有一個前綴”.定義格式如下定義格式如下:class 類名類名 public 類名類名() /定義析構函數(shù)定義析構函數(shù) 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.8.2 預測程序的輸出預測程序的輸出
46、 結果結果根據(jù)析構函數(shù)的功能根據(jù)析構函數(shù)的功能,課堂案例課堂案例8-7的輸出結果為:的輸出結果為:構造函數(shù)被調用構造函數(shù)被調用析構函數(shù)被調用析構函數(shù)被調用第第8章章 面向對象程序設計基礎面向對象程序設計基礎 課堂實踐課堂實踐8-7閱讀下面的程序閱讀下面的程序,識別析構函數(shù)并預測程序的輸出結果。識別析構函數(shù)并預測程序的輸出結果。namespace prj8_7 class Circle double radius; const double PI=3.14; public Circle() radius = 0; Console.WriteLine(“構造函數(shù)被調用構造函數(shù)被調用”); Circ
47、le() Console.WriteLine(“析構函數(shù)被調用析構函數(shù)被調用”); 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章章 面向對象程序設計基礎面向對象程序設計基礎 8.9 靜態(tài)類靜態(tài)類靜態(tài)類靜態(tài)類 當在類聲明中添
48、加當在類聲明中添加static修飾符時,該類稱為靜態(tài)類。對修飾符時,該類稱為靜態(tài)類。對于靜態(tài)類,于靜態(tài)類,用戶不必創(chuàng)建該類的實例對象就可以訪問類中的數(shù)據(jù)和用戶不必創(chuàng)建該類的實例對象就可以訪問類中的數(shù)據(jù)和方法成員。方法成員。靜態(tài)類的定義格式如下:靜態(tài)類的定義格式如下:static class 類名類名 /類定義類定義第第8章章 面向對象程序設計基礎面向對象程序設計基礎 以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)類不能被實例化。、靜態(tài)類不能包含實例構造函數(shù),但可聲明靜態(tài)構造函數(shù)用以分配初始值或設置某個靜態(tài)狀態(tài)。第第8章章 面向對象程序設計基礎面向對象程序設計基礎 8.10 靜態(tài)成員靜態(tài)成員【課堂案例課堂案例8-8】閱讀下面的程序,識別靜態(tài)成員并預測閱讀下面的程序,識別靜態(tài)成員并預測程序的輸出結果程序的輸出結果。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、“商品編號:商品編號:” + itemId.ToString(); Console.Write(“,商品名稱:,商品名稱:” + itemName); Console.Write(“,商品單價:,商品單價:” + price.ToString(); Console.Write(“,現(xiàn)有數(shù)量:,現(xiàn)有數(shù)量:” + qtyOh.ToString() + n); 第第8章章 面向對象程序設計基礎面向對象程序設計基礎 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宜賓職業(yè)技術學院(第一次)國家編制外專職輔導員公開招聘6人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年安徽黃山徽州區(qū)醫(yī)療保障局招聘1人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025-2030年中國數(shù)字減影血管造影x射線裝置行業(yè)規(guī)模分析及投資前景研究報告
- 2025-2030年中國塑木復合材料項目投資風險分析報告
- 2025-2030年中國醫(yī)用磁共振設備市場發(fā)展現(xiàn)狀規(guī)劃研究報告
- 2024-2030年測序儀公司技術改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年中國順轉雙柵回轉式格柵除污機境外融資報告
- 2024年中圖版選修2歷史上冊月考試卷含答案622
- 2021-2022學年廣東省廣州市荔灣區(qū)部編版小學三年級下冊語文期末試題及答案
- 人教版高中物理必修第三冊第十章靜電場中的能量質量評估練習含答案
- 高性能稀土鋁合金導體材料研究
- 電鍍廠安全常識培訓
- 倉儲管理練習題及答案
- 污水處理廠的工藝流程設計
- 危險品運輸車輛租賃合同
- 急性呼吸衰竭的急救(病案查房)
- 2025年日歷有農(nóng)歷有周數(shù)周一開始(A4紙可編輯可直接打印)
- 2006年度銀行業(yè)金融機構信息科技風險評價審計要點
- 基于PLC的校園照明智能控制系統(tǒng)設計畢業(yè)設計論文
- 現(xiàn)澆梁鋼管柱+貝雷片支架驗收表
- 2022年中考物理真題選及參考答案-電學計算題
評論
0/150
提交評論