python中類的繼承和多態

2020-12-04 最後的程序猿

繼承是為了代碼復用和設計復用而設計的,是面向對象程序設計的重要特徵之一。當我們設計一個新類時,如果可以繼承一個已有的設計良好的類然後進行二次開發,無疑會大幅度減少開發工作量。

1. 類的繼承

類繼承語法:

Class 派生類名(基類名): #基類名寫在括號裡

派生類成員

在繼承關係中,已有的,設計好的類稱為父類或基類,新設計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。

在python中繼承的一些特點:

A、 在繼承中基類的構造函數(__init__()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用

B、 如果需要在派生類中調用基類的方法時,通過「基類名.方法名()」的方法來實現,需要加上基類的類名前綴,且需要帶上self參數變量。區別於在類中調用普通函數時並不需要帶上self 參數。也可以使用內置函數super()實現這一目的。

C、 Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查找(先在本類查找調用的方法,找不到才去基類中找)。

如下是類的繼承應用

1.1 類的多繼承

Python的類可以繼承多個基類。繼承的基類列表跟在類名之後。類的多繼承語法:

例如定義C類繼承A,B二個基類如下:

1.2 方法重寫

重寫必須出現在繼承中。它是指當派生類繼承了基類的方法之後,如果基類方法的功能不能滿足需求,需要對基類的某些地方進行修改,可以在派生類重寫基類的方法,也就是重寫。

同一種事務的多種形態 就是多態

車有多種形態,你沒有具體學習某一個對象,你是學的怎麼開車(這就是多態性)

1、增加了程序的靈活性

以不變應萬變,不論對象千變萬化,使用者都是同一種形式去調用,如func(animal)

2、增加了程序可擴展性

通過繼承animal類創建了一個新的類,使用者無需改變自己的代碼 還是func(animal)去調用

相關焦點

  • 黑馬程式設計師:Python封裝、繼承和多態以及類方法等習題
    繼承 D.多態3.以下C類繼承A類和B類的格式中,正確的是()。以上3項都不符合二、判斷題Python中沒有任何關鍵字區分公有屬性和私有屬性。()繼承會在原有類的基礎上產生新的類,這個新類就是父類。()帶有兩個下劃線的方法一定是私有方法。
  • 【4】類的繼承和多態-簡易的Python面向對象教程
    面向對象(2) - 實例方法 (本文) 面向對象(3) - 類屬性和類方法 面向對象(4) - 繼承和多態,以及一個綜合小遊戲案例
  • Java 中的繼承和多態(深入版)
    面向對象的三大特性:封裝、繼承、多態。在這三個特性中,如果沒有封裝和繼承,也不會有多態。那麼多態實現的途徑和必要條件是什麼呢?以及多態中的重寫和重載在JVM中的表現是怎麼樣?在Java中是如何展現繼承的特性呢?對於子類繼承於父類時,又有什麼限制呢?
  • 面向對象特性之三:多態(Python進階教程)
    今天我們還是用例子來說明在Python中多態的使用方法、注意事項和使用的優點。這兩個類是「部門類」的子類,下面我們用代碼來表示一下這三個類:在上例中,我們定義了三個類,主類叫做「部門類」,兩個子類繼承於該類,分別代表「海運部門」和「空運部門」,這兩個類除了都有自己的構造函數之外,還有著一個具有相同名稱的方法,我們暫且叫做「送貨」方法。
  • 用最傻瓜式的方法理解Java中的封裝、繼承和多態
    說到java中面向對象的封裝、繼承和多態,很多人會說這麼簡單這麼入門的東西一直講幹嘛,雖然是基礎,但是我們要明白,所有東西都是要在基礎上發展的,沒有基礎就去學其他的,那麼你肯定是很容易失敗的,那麼應該怎樣能夠用傻瓜式方法去理解Java面向對象的封裝、繼承和多態呢?
  • 淺析java繼承與多態,抽象類與接口的區別
    面向對象的設計可以更好的解決系統維護、擴展、和代碼重用的需求,代碼過多後過程式的邏輯組織會變得異常複雜,所以就發展出了面向對象式編程。而面向對象的基本特性就是封裝、繼承、與多態。一、繼承extends 關鍵字表示繼承某個已存在的類,已存在的類稱為「超類」、「基類」、或「父類」,而新繼承的類稱為「子類」、「派生類」。子類可以方法父類中的所有非 private 域,也即子類通過繼承獲得了父類具有的特性和能力。
  • Java中使用接口實現多繼承和多態的方法
    1.JAVA裡沒有多繼承,一個類之能有一個父類。  而繼承的表現就是多態。一個父類可以有多個子類,而在子類裡可以重寫父類的方法(例如方法print()),這樣每個子類裡重寫的代碼不一樣,自然表現形式就不一樣。
  • 在.NET中,C#舉例深度理解面向對象編程中的封裝、繼承和多態
    面向對象編程是將我們實際生活中的對象經過抽象,將它定義成為一個類,通過類的屬性和方法來模擬生活中的這個對象。這樣使得程序更容易結構化、抽象起來更方便,這是一種編程思想。面向對象的編程和3大特徵是:封裝、繼承、多態。也就是說只要我們編寫的程序當中使用了這3個特徵,那就是面向對象的編程。
  • Java面向對象之:封裝、繼承、多態
    在Java中使用」extends」關鍵字來表示子類和父類之間的繼承關係;在Java中,類之間的繼承關係只允許單繼承,不允許多繼承,一個類只能有一個直接父類。同時繼承於類B和類C。繼承中的隱藏上文中提到了隱藏的概念,繼承中的隱藏表示會忽略一些特徵和方法,比如靜態欄位和靜態方法:滿足繼承的訪問權限下,隱藏父類靜態方法:若子類定義的靜態方法的籤名和超類中的靜態方法籤名相同,那麼此時就是隱藏父類方法。
  • Java繼承多態編程題
    題目1:請使用多態實現以下需求:小明有兩個很要好的朋友。一個是中國的王小強,喜歡吃四川菜,練太極拳;一個是美國的約翰,喜歡吃比薩,打橄欖球。題目2:創建一個印表機類Printer,定義抽象方法print( ),創建兩個子類,即針式印表機類DotMatrixPrinter和噴墨印表機類InkpetPrinter,並在各自類中重寫方法print( ),編寫測試類實現兩種印表機列印。
  • 必學——Java抽象類、接口、多態
    若abstract類的類體中有abstract方法,只允許聲明,而不允許實現。2、接口Java不支持多繼承性,即一個類只能有一個父類。單繼承性使得Java簡單,易於管理程序。–實現類可以實現多個接口–接口中的變量都是靜態常量(4)、編碼實現3、多態:同一個引用類型,使用不同的實例而執行不同操作(1)使用多態實現思路
  • Java中的面向對象三大特性之多態
    區分方法重寫和方法重載方法覆蓋(重寫)和方法重載是兩個極易混淆的概念,必須嚴格區分;方法覆蓋出現的前提條件之一是必須有繼承發生的情況下,而且要求父類和子類中的方法必須同原型;方法重載時,繼承並不是必需的,它只要求方法名稱相同,而參數列表則必須不同
  • 深入分析java中的多態(從jvm角度分析)
    對於java中多態概念的理解一直是面試常問的問題,所以今天花了一些時間好好地整理了一下,力求從java虛擬機的角度來分析和理解多態。一、認識多態1、方法調用在Java中,方法調用有兩類,動態方法調用與靜態方法調用。
  • Java基礎之多態,動態綁定多態的代碼案例,簡單卻很重要
    持續更新中...一、多態多態基於繼承(),現實事物中經常可以看到人,而學生、工人、白領、太空人等都是人,即由人演變而來的多種狀態。多態是Java三大特性(封裝、繼承、多態)之一,它的出現豐富了完善了Java面向對象體系。
  • Java多態性:Java什麼是多態?
    多態性是面向對象編程的又一個重要特徵,它是指在父類中定義的屬性和方法被子類繼承之後,可以具有不同的數據類型或表現出不同的行為,這使得同一個屬性或方法在父類及其各個子類中具有不同的含義
  • Thinking In Java --- 多態(筆記)
    在面向對象的程序設計語言中,多態是繼數據抽象和繼承之後的第三種基本特徵。多態通過分離做什麼和怎麼做,從另一個角度將接口和實現分離開來。多態不但能夠改善代碼的組織結構和可讀性,還能夠創建可擴展的程序----即無論在項目最初創建時還是在需要添加新功能時都可以「生長」的程序。
  • Java多態,對象轉型,和簡單工廠模式 希望對您有幫助!
    而java的多態分為兩種:靜態多態和動態多態。靜態多態的小名叫編譯時多態,通過方法的重載來實現。動態多態是運行時的多態形式,通過對象的多態性質來實現。多態有哪些常用的實現形式呢?分為三種:1,父類作為方法的行參。2,父類作為方法的一個返還值。3,父類引用直接指向子類對象。接下來需要注意的是,敲黑板!
  • Java中多態的概念與應用,以及成員變量和成員方法的訪問特點
    JAVA面向對象學習之多態的概念和應用21.1多態的概念和應用1、概念:多態(polymorphic)是指事物存在的多種形態。2、多態的前提:要有繼承的關係、要有方法重寫以及要有父類引用指向子類對象。案例分析父類引用指向子類對象演示如圖1所示:3、成員變量的訪問特點:編譯看左邊(父類),運行看左邊(父類)演示如圖2、3所示:4、成員方法的訪問特點:編譯看左邊(父類),運行看右邊(子類)(動態綁定)案例演示如圖4、5所示:5、靜態成員方法的訪問特點:編譯看左邊(父類),運行看左邊(父類),只有非靜態的成員方法,編譯看左邊
  • JAVA面向對象的多態是個什麼東西?
    面向對象的三大特徵:封裝、繼承、多態。在前面已經說了過了封裝和繼承。今天就來聊聊剩下的多態。多態,從字面內容來看,就是多種形態,多種狀態。在java的面向對象中可以從以下兩個方面來講。01不同子類之間的多態在前面我們說繼承的時候說到,子類可以繼承到父類的方法,繼承後可以對方法進行重寫。
  • Java中的多態有哪些具體表現形式
    學習Java語言的過程中,對於多態的理解是非常關鍵的,理解了多態也就意味著打開了理解Java各種「抽象」的大門。所謂的「多態」,簡單的理解就是對象在不同情況下的不同表現,具體體現在定義和功能兩個方面,簡單的總結一下,多態可以用「三個定義和兩個方法」來總結。三個定義分別是父類定義子類構建、接口定義實現類構建和抽象類定義實體類構建,而兩個方法分別是方法重載和方法重寫。