多型是將不同的物件呼叫相同的方法,產生不同的執行結果。
多型可以增加**的靈活度,以繼承和重寫父類方法為前提,是呼叫方法的技巧,不會影響到類的內部設計。
我們都知道,python 是弱型別語言,其最明顯的特徵是在使用變數時,無需為其指定具體的資料型別。
示例:在 dog 類中封裝方法 game,普通狗只是簡單的玩耍。
定義 xiaotiandog 繼承自 dog,並且重寫 game 方法,哮天犬需要在天上玩耍。
定義 person 類,並且封裝乙個和狗玩的方法,在方法內部,直接讓狗物件呼叫 game 方法。
print("%s 蹦蹦跳跳的玩耍..." % self.name)
class xiaotiandog(dog):
def game(self):
print("%s 飛到天上去玩耍..." % self.name)
class person(object):
def __init__(self, name):
self.name = name
def game_with_dog(self, dog):
print("%s 和 %s 快樂的玩耍..." % (self.name, dog.name))
dog.game()
# 1. 建立乙個狗物件
# wangcai = dog("旺財")
wangcai = xiaotiandog("飛天旺財")
# 2. 建立乙個小明物件
xiaoming = person("小明")
# 3. 讓小明呼叫和狗玩的方法
xiaoming.game_with_dog(wangcai)
# 小明 和 飛天旺財 快樂的玩耍...
# 飛天旺財 飛到天上去玩耍...
game 方法是在 dog 父類中定義的,person 類中只需要讓狗物件呼叫 game 方法,而不關心具體是什麼狗。
在程式執行時,傳入不同的狗物件實參,就會產生不同的執行效果。
類的多型特性,必須滿足以下 2 個前提條件:
多型更容易編寫出通用的**,做出通用的程式,以適應需求的不斷變化!
python 物件導向的三大特徵之 繼承
繼承 object 基類,是python定義的所有類的父類 經典類 不繼承object的類稱作經典類 新式類 繼承object的類稱作新式類 python 3.x統一為新式類 經典類是類物件,新式類是型別物件 經典類的繼承是按照繼承的順序進行繼承的 新式類是按照修改的優先順序來繼承,越後修改優先順序...
物件導向三大特徵之封裝
上半句 下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。時刻警醒 我們要學習的是講述真...
物件導向三大特徵之封裝
將屬性封裝起來,不讓外部直接訪問 提供getset方法訪問 package com.lv.am 資料的封裝 資料的實體類物件 除了這個商品的物件 我們還有什麼現實生活中也是這樣來定義乙個實體類 public class goods public void setname string name pu...