python面向對象進階-03類的組合

類的組合

什麼是組合

組合就是一個類的對象具有某一個屬性,該屬性的值是指向另外外一個類的對象

大白話理解:也是一種關係,描述兩個對象之間 是什麼有什麼的關係
將一個對象做爲另外一個對象的屬性,(既什麼有什麼)python

組合能夠理解成多我的去造一個機器人,有的人造頭、有的人造腳、有的人造手、有的人造軀幹,你們都完工後,造軀幹的人把頭、腳、手拼接到本身的軀幹上,所以一個機器人便造出來了app

爲何用組合(組合和繼承的比較)

也是爲了重用現有代碼
何時使用繼承:分析兩個類的關係,究竟是不是:什麼是什麼的關係
何時使用組合:若是兩個類之間 沒有太大的關係,徹底不屬於同類
另外組合相比繼承,耦合度更低了code

組合是用來解決類與類之間代碼冗餘的問題!!!!!!!!!!!!!!!

怎麼用組合

大白話解釋: 好比兩個不一樣的類 入下面列子 一個學生和手機的故事.這2個沒有共同點,可是學生有要一個手機的需求,這時候能夠把手機類建立出的一個手機對象作爲建立學生的對象須要的一個參數, 這樣就實現了兩個不一樣徹底沒有共性(不存在任何繼承關係)對象實現了二者的交互. 組合就是用來解決類和對象遇到這種問題的這種場合!!!!!
Ps: 同時組合的 耦合性相較與 類的繼承的耦合性更低!
二者無關的場景必定要用組合來解決問題!對象

class Phone:
    def __init__(self,price,kind,color):
        self.price = price
        self.kind = kind
        self.color = color
    def call(self):
        print("正在呼叫XXXX;")
    def send_message(self):
        print("正在發送短信....")

class Student:
    def __init__(self,name,gender,phone):
        self.name = name
        self.gender = gender
        self.phone = phone
    def show_info(self):
        print("name:%s gender:%s" % (self.name,self.gender))

phone = Phone(1000,"apple","red")
stu1 = Student("rose","male",phone)
stu1.phone.call()
相關文章
相關標籤/搜索