繼承_月隱學python第16課

目錄

1.封裝

1.1 屬性私有化

1.2 屬性裝飾器

1.3 成員⽅法私有化

2.繼承

2.1 單繼承

2.2 多繼承(理解、瞭解)

3.類成員

作業

初級

中級


⾯向對象三⼤特徵:封裝、繼承、多態


1.封裝

隱藏對象的屬性和實現細節,僅對外公開接⼝,控制在程序中屬性的讀取和修改的訪問級別。
類本身就是⼀種封裝,通過類可以將數據(屬性)和⾏爲(⽅法)相結合,形成⼀個有機的整體,也就是將數據與對數據的操作有機的結合。封裝的⽬的是增強安全性和簡化編程,使⽤者不必瞭解具體的實現細節,⽽只是要通過外部接⼝,以特定的訪問權限來使⽤類的成員。成員私有化是實現封裝的⼿段。所有的成員默認是公有。


1.1 屬性私有化

如果想讓類的內部屬性不被外界直接訪問,可以在這個屬性的前⾯加兩個下劃線__,在Python中,如果⼀個屬性的前⾯出現 __,就表示這個屬性只能在當前類的⽅法中被直接訪問,不能通過對象直接訪問,這個變量就被稱爲私有變量

1.2 屬性裝飾器

對於私有屬性的訪問,使⽤公開⽅法間接訪問的⽅法太麻煩, python提供了⼀種便捷語法,屬性裝飾器,通過屬性裝飾器,可以很⽅便的對私有屬性進訪問,屬性修飾器可以把⽅法屬性化。

1.3 成員⽅法私有化

如果對⼀個⽅法的名字前⾯加__,聲明該⽅法爲私有⽅法,只能在當前類中被調⽤,在外界不能通過對象直接調⽤,這就是私有⽅法

2.繼承
 

⾯向對象編程 (OOP) 語⾔的⼀個主要功能就是“繼承”,所謂繼承就是使現有的類⽆需編碼便可以擁有原有類的⽅法和屬性。

被繼承的類可以稱之爲⽗類、基類、超類。繼承的類可以稱之爲⼦類、派⽣類。派⽣和繼承是⼀體兩⾯,從⽗類向⼦類看就是派⽣,從⼦類向⽗類看就是繼承。⼦類和⽗類的關係可以⽤“is a”類表示,即⼦類是⽗類的⼀種,是⼀個更具體、更加強⼤的⽗類。 python⽀持單繼承和多繼承。
繼承的優點:

  • 可以簡化代碼,減少冗餘度
  • 提⾼了代碼的可維護性
  • 提⾼了代碼的安全性


2.1 單繼承

所謂的單繼承就是⼀個⼦類只有⼀個⽗類。⼦類會繼承⽗類所有的屬性和⽅法。

  • 私有成員在⼦類中⽆法直接使⽤
  • ⼦類對象⽆法直接使⽤繼承⾃⽗類的私有成員
  • ⼦類⽅法和⽗類⽅法重名,通過⼦類對象調⽤的是⼦類⽅法
     

注意: object是Python中所有類的⽗類【⼀般情況下,如果⼀個類沒有指明的⽗類,默認它的⽗類爲object】

  • 構造函數的繼承

  • ⽅法的改寫

  • ⽅法添加
     

2.2 多繼承(理解、瞭解)

⼀個⼦類可以有多個⽗類。語法:

3.類成員

類成員包括:類屬性和類⽅法,不同於成員屬性和成員⽅法屬於對象,類屬性和類⽅法屬於類,可以不實例化對象,直接通過類名調⽤,這些類成員爲所有對象共有,⼀般⽤於對象間通信。
在程序運⾏期間類屬性始終存在
類屬性

類⽅法和靜態⽅法

  • 類⽅法屬於類,爲所有對象共有,可以通過類名或對象調⽤
  • 類⽅法可以⽤來訪問類屬性
  • 靜態⽅法屬於類的作⽤域內的全局函數
  • 類⽅法和靜態⽅法的區別,類⽅法第⼀個參數是類對象,由系統傳⼊,靜態⽅法沒有
  • 共同點:靜態⽅法和類⽅法都可以通過類名直接調⽤,屬於類,不屬於對象

作業


初級

1.劉凱買了一臺玫瑰紅phone10,價值8000元,可以打電話、玩遊戲

2.寫一個計算器器類,可以進行加、減、乘、除計算

3.設計兩個類:

  • 一個點類,屬性包括xy座標。
  • 一個Rectangle類(矩形) ,屬性有左上⻆和右下角的座標,可以計算矩形的面積;可以判斷點是否在正方形內

實例化一個點,⼀個正方形,輸出正⽅形的⾯積,輸出點是否在正方形內

4.定義一個Time類,成員屬性包括:時、分、秒;成員⽅方法: ​
add_hour(self,num) 把小時加num​add_minute(self,num) 把分鐘加num​add_second(self,num) 把秒數加num​重寫 __str(self)__ ⽅方法,返回格式化的時間字符串串: "04:16:09"

中級

1.請寫⼀個小遊戲,人狗大站, 2個⻆⾊,⼈和狗,遊戲開始後,⽣成2個人, 3條狗,互相混戰,人被狗咬了會掉血,狗被人打了也掉血,狗和人的攻擊力,具備的功能都不⼀樣。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章