




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第七章面向?qū)ο缶幊?49250第一節(jié)面向?qū)ο蠡A(chǔ)第二節(jié)類的定義與使用第三節(jié)數(shù)據(jù)成員與方法成員第四節(jié)類的繼承第五節(jié)類的封裝和多態(tài)面向?qū)ο蠡A(chǔ)第一節(jié)2511.?了解面向?qū)ο蟮暮x。2.?了解面向?qū)ο蟮幕咎卣鳌?.?了解面向?qū)ο蟮某S眯g(shù)語。252一、面向?qū)ο蟮暮x面向?qū)ο缶幊淌且环N通過對象,把現(xiàn)實世界映射到計算機模型的編程方法。把數(shù)據(jù)和對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存的整體——對象。這里把現(xiàn)實世界的任何事物都當(dāng)作一個相對獨立的對象來看待;也可以是抽象的事件。253二、面對對象的基本特征1.?封裝封裝是面向?qū)ο缶幊痰暮诵乃枷耄瑢ο蟮膶傩院托袨榉庋b起來就是類。采用封裝的優(yōu)點是保證了類內(nèi)部數(shù)據(jù)結(jié)構(gòu)的完整性,使用類時不能直接訪問該類中的數(shù)據(jù),避免了外部對內(nèi)部數(shù)據(jù)的影響,提高了程序的可維護性。面向?qū)ο蟪绦蛟O(shè)計采用封裝具有以下兩方面含義。(1)將有關(guān)的數(shù)據(jù)和操作代碼封裝在一個類中,各個類之間相對獨立,互不干擾。(2)將類中的某些數(shù)據(jù)和操作代碼對外隱蔽,即隱蔽內(nèi)部細(xì)節(jié),只留下少量接口,以便與外部聯(lián)系,接收外部的消息。2542.?繼承繼承主要利用了特定對象之間的共有屬性。如果類之間具有繼承關(guān)系,則它們具有以下特性。(1)類之間具有共享特性。(2)類之間具有差別或新增部分。(3)類之間具有層次結(jié)構(gòu)。繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其他語言的最重要的特點,是其他語言所沒有的。繼承性可以避免公用代碼的重復(fù)開發(fā),避免代碼和數(shù)據(jù)冗余,而且能通過增強一致性來減少模塊間的接口和界面。2553.?多態(tài)多態(tài)是指同一個行為可以有不同的表現(xiàn)形式。多態(tài)的意義在于同一操作作用于不同的對象時,可以有不同的解釋,從而產(chǎn)生不同的執(zhí)行結(jié)果,即“以父類的身份出現(xiàn),以自己的方式工作”。256三、面向?qū)ο蟮某S眯g(shù)語1.?類類(class)是用來描述具有相同的屬性(數(shù)據(jù))和行為(方法)的對象集合。它定義了該集合中所有對象共有的數(shù)據(jù)和方法,對象是類的實例。2572.?對象對象是通過類定義的數(shù)據(jù)結(jié)構(gòu)進行實例化后的變量。對象包括數(shù)據(jù)成員(類變量和實例變量)和方法。Python和其他編程語言相比,在盡可能不增加新的語法和語義的情況下加入了類機制。面向?qū)ο缶幊痰奶攸c如下。(1)完全采用面向?qū)ο蟮乃枷耄且环N高級動態(tài)編程語言。(2)支持封裝、繼承、多態(tài)、重載和重寫。(3)一切內(nèi)容都為對象,如字符串、列表、元組、數(shù)值等。(4)創(chuàng)建類時,屬性用變量表示,行為用方法表示。2583.?實例化實例化就是創(chuàng)建一個類的實例,即類的具體對象。4.?類變量類變量在整個實例化的對象中是公用的。類變量定義在類中且在方法體之外。5.?實例變量實例變量是定義在方法中的變量,只作用于當(dāng)前實例中。2596.?數(shù)據(jù)成員類變量或?qū)嵗兞坑糜谔幚眍惣捌鋵嵗龑ο蟮南嚓P(guān)數(shù)據(jù)就是數(shù)據(jù)成員。7.?方法類中定義的函數(shù)常稱為方法。方法是類中一種特殊的函數(shù)。8.?方法重寫如果從父類繼承的方法不能滿足子類的要求,可以對其進行改寫,這個過程稱為方法覆蓋,也稱為方法重寫。260類的定義與使用第二節(jié)2611.?了解類的含義。2.?掌握類的定義方法。3.?掌握類實例化的方法。262一、類的定義Python中使用關(guān)鍵字class來定義類。格式:class類名:數(shù)據(jù)成員名=值
def方法名():方法體263說明:1.類名遵循標(biāo)識符命名規(guī)則,通常情況下建議類名首字母大寫,有多個單詞時遵循“駝峰原則”。2.類的成員包括數(shù)據(jù)成員和方法成員。數(shù)據(jù)成員的定義通過直接給數(shù)據(jù)成員賦值的方式進行,方法成員的定義與函數(shù)的定義方式相同。264二、類的實例化類的實例化即由類創(chuàng)建對象。當(dāng)類定義完成后,并不會真正創(chuàng)建一個實例。格式:對象名=類名([參數(shù)1,參數(shù)2,…])功能:將類實例化為對象。說明:參數(shù)是可選項,根據(jù)類的構(gòu)造方法選擇是否需要參數(shù)。通過“對象名.數(shù)據(jù)成員”或“對象名.方法成員()”的方式來訪問對象的數(shù)據(jù)成員或方法成員。265
數(shù)據(jù)成員與方法成員第三節(jié)2661.?了解數(shù)據(jù)成員的類別。2.?了解方法成員的類別。3.?能區(qū)分類成員和實例成員。267一、數(shù)據(jù)成員1.?數(shù)據(jù)成員的類別Python中類的數(shù)據(jù)成員包括類成員(類屬性)和實例成員(實例屬性)。類成員是在類中所有方法之外定義的數(shù)據(jù)成員;實例成員一般是在構(gòu)造方法__init__()中定義的,定義和使用時必須以self作為前綴。與構(gòu)造方法相對應(yīng)的方法稱為析構(gòu)方法__del__(),是將產(chǎn)生的對象清除后由系統(tǒng)自動調(diào)用,一般用來釋放對象所占用的資源。如果沒有明確定義析構(gòu)方法,系統(tǒng)會提供一個默認(rèn)的析構(gòu)方法進行必要的清理工作。2682.?數(shù)據(jù)成員的區(qū)別在主程序(或類的外部)中,實例成員屬于實例(即對象),只能通過對象名訪問;而類成員屬于類,既可以通過類名訪問,也可以通過對象名訪問。3.?類成員的增加與其他面向?qū)ο缶幊痰恼Z言不同,在Python中,允許動態(tài)地為類和對象增加成員,這是Python動態(tài)類型特點的重要體現(xiàn)。4.?屬性值的修改如果修改類成員的值,應(yīng)通過類修改,而不能通過對象修改。269二、方法成員1.?實例方法實例方法是每個對象所有的、各自獨立的方法。如果類中定義的方法沒有特殊聲明,都是實例方法。類的所有方法都應(yīng)至少有一個名為self的參數(shù),并且必須是方法的第一個參數(shù)。參數(shù)self代表將來要創(chuàng)建的對象本身,在外部通過“對象名.方法名()”調(diào)用實例方法時并不需要傳遞這個參數(shù);如果在外部通過“類名.方法名()”調(diào)用實例方法,則需要顯式地為參數(shù)self傳值。在類的實例方法中訪問實例成員時,需以“self.實例成員”形式訪問,訪問類成員時需以“類名.類成員”形式訪問。2702.?類方法類方法是屬于類的方法,不屬于任何實例對象。類方法主要模擬__init__構(gòu)造方法在定義類的時候使用類的屬性或者給類的屬性賦值。類方法以cls作為第一個參數(shù)表示該類自身,使用方法與self類似。在類中定義類方法時用@classmethod修飾。2713.?靜態(tài)方法與類方法相似,靜態(tài)方法不屬于任何實例對象,它只屬于類。靜態(tài)方法主要存放邏輯性的代碼,是一個相對獨立、單純的方法。在類中定義靜態(tài)方法時用@staticmethod修飾。靜態(tài)方法可以沒有任何參數(shù)。同樣,靜態(tài)方法既可以通過“類名.方法名()”形式訪問,也可以通過“對象名.方法名()”形式訪問,與類方法相同,靜態(tài)方法中也只能訪問類成員,而不能訪問實例成員。272三、訪問權(quán)限1.?公有的公有的類成員可以在任何地方被訪問,其成員兩側(cè)不帶下畫線,形如
×××。2.?受保護的受保護的類成員可以被其自身及其子類訪問,其成員以單下畫線開頭,形如_×××。2733.?私有的私有的類成員只能被其定義所在的類訪問,其成員以雙下畫線開頭,形如__×××。4.?特殊成員特殊成員的兩側(cè)各有雙下畫線,形如__×××__,為系統(tǒng)定義的特殊成員,如構(gòu)造方法__init__等。274類的繼承第四節(jié)2751.?了解繼承的含義。2.?掌握繼承的定義格式。3.?能調(diào)用父類方法。276一、繼承關(guān)系在程序中,繼承描述的是事物之間的所屬關(guān)系,一般來說,子類是基類的特殊化。如圖所示,父類為學(xué)生,小學(xué)生、初中生、高中生和大學(xué)生都是父類派生而來的子類。277繼承關(guān)系二、繼承的定義格式繼承的語法格式:class子類名(父類名1[,父類名2…]):
子類成員定義父類寫在括號內(nèi),如果子類有多個父類,則需要全部寫在括號內(nèi)并用逗號“,”分隔,括號后緊跟冒號。278三、父類方法的調(diào)用子類除了可以繼承父類成員外,還可以添加自己的一些成員。如果需要在子類中調(diào)用父類的方法,可以使用內(nèi)置方法“super().方法名”或通過“父類名.方法名()”方式來實現(xiàn)。四、多繼承在Python中支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將按順序從左向右進行搜索。279類的封裝和多態(tài)第五節(jié)2801.?了解類的封裝的含義。2.?了解類的多態(tài)的含義。281一、類的封裝在Python中,類的封裝是指將類的某些部分(屬性、方法)隱藏起來,稱為私有屬性或方法。實例化的對象不能直接使用被封裝的方法和屬性。封裝具有一定的保護作用,可以隱藏對象的屬性和方法。在P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年有機食品市場增長動力分析及生產(chǎn)標(biāo)準(zhǔn)創(chuàng)新研究報告
- 冷鏈物流環(huán)境下醫(yī)療器械企業(yè)冷鏈物流配送中心選址與規(guī)劃策略
- 2025年浙江省紹興一中高三下第一次測試英語試題含答案
- 2025屆湖南省長沙市長沙縣九中高三六校第一次聯(lián)考英語試卷含答案
- 穩(wěn)派教育2025年高三最后一卷英語試卷含答案
- 2025屆上海市寶山區(qū)海濱中學(xué)高考英語五模試卷含解析
- 2025項目招標(biāo)與合同管理
- 2025借款擔(dān)保合同范本
- 2025模范后勤勞動合同
- 2025年版補充租房合同協(xié)議書
- 2025固體礦產(chǎn)地質(zhì)調(diào)查規(guī)范1:25000
- 2025-2030中國具身智能行業(yè)研發(fā)創(chuàng)新策略與未來前景展望報告
- 臺球俱樂部創(chuàng)業(yè)計劃書
- 智慧樹知到《藝術(shù)與審美(北京大學(xué))》期末考試附答案
- T-GDFS 50-2024 灰肉紅菇標(biāo)準(zhǔn)規(guī)范
- 2024年云南民大附中西山分校招聘 筆試真題
- 1688運營培訓(xùn)課件
- 2025至2030年生吃醬油項目投資價值分析報告
- 核心素養(yǎng)視角下的小學(xué)科學(xué)單元整體教學(xué)設(shè)計培訓(xùn)講座
- 機泵基礎(chǔ)知識
- 2023-2024年文化文物及文化遺產(chǎn)應(yīng)知應(yīng)會知識考試題庫(附含答案)
評論
0/150
提交評論