4 過載和重寫

2021-10-05 23:29:17 字數 926 閱讀 3675

內容提要

• 結合**,觀察覆蓋,過載和方法重複

• 從物件導向角度,分析覆蓋時需要注意的兩大準則

子類方法覆蓋(override)父類方法

方法的過載(overload)

• 過載:方法同名,不同參

• 方法同名,同參,不同引數名,是重複方法

• 方法同名,同參,不同返回值,是重複方法

子方法覆蓋時的限制

• 子類方法不能縮小父類

• 子類方法不能縮小父類方法的訪問許可權,如縮小,會造成父類 本該可見的方法不可見,違背物件導向思想的「父類定義通用 屬性和方法」的原則

• 子類方法不該丟擲比父類方法更寬泛的異常,該限制背後的設 計動機是:在父類裡定義的方法原型是外部呼叫的規範,如子 類方法擴大了異常型別,會造成外部呼叫時,無法處理丟擲的 異常

過載蘊含著「多型」思想

過載蘊含著「多型」思想

• 通過過載,能分離「業務」和「業務實現細節」 • 針對同類業務,可以用同名的方法來定義和實現,從而提公升代 碼的可讀性 • 方法同名表示「業務相同」,不同參則表示「實現細節不同」

• 兩者的解耦合,能提公升**的可擴充套件性

總結

總結

1. 面試時,不該只講述過載和覆蓋的語法

2. 可以通過覆蓋的兩大限制,講述背後包含的物件導向設計動機

3. 可以通過過載,進一步講述對多型思想的認識(分離業務和業務實 現細節)

20200405 過載和重寫

公尺格爾 格林貝格,近30年開發經驗的軟體工程師,以撰寫python專案開發的部落格而廣為python開發者所熟知,經常受邀在pycon等大會上分享開發經驗。代表作有 flask web開發 基於python的web應用開發實戰 第2版 1 過載與重寫的區別。答 一 定義上的區別 過載是指不同的函式...

1 過載和重寫的區別

1 所處位置不同 過載在同類中 重寫在父子類中 2 定義方式不同 過載方法名相同 引數列表不同 重寫方法名和引數列表都相同 3 呼叫方式不同 過載使用相同物件以不同引數呼叫 重寫用不同物件以相同引數呼叫 4 多型時機不同 過載時編譯時多型 重寫是執行時多型 過載 class overloadtest...

C 問題4 過載

在同一作用域類,一組函式的函式名相同,引數列表不同 引數個數不同或者引數型別不同 返回值可同可不同。過載函式通常用來在同乙個作用域內,用同乙個函式名命名一組功能相似的函式,這樣做減少了函式名的數量,避免了名字空間的汙染,對於程式的可讀性有很大的好處。1 多型 用同乙個東西表示不同的形態。2 多型分為...