組合

  • 當希望「子類別的動作」大都與它的父類別相同時(當子 is-a 父時),繼承是一種很棒的技術
    • 打造精緻的繼承層次是很吸引人,但是有時使用組合(composition)聚合(aggregation)比較合理
    • 鴨子 is-a 鳥類,但 has-a 尾巴 → 尾巴不是鴨子,卻是鴨子的一部分

【範例】製作 bill 與 tail 物件,並將它們提供給新的 duck 物件

>>> class Bill():
        def __init__(self, description):
            self.description = description

>>> class Tail():
        def __init__(self, length):
            self.length = length

>>> class Duck():
        def __init__(self, bill, tail):
            self.bill = bill
            self.tail = tail
        def about(self):
            print('This duck has a', self.bill.description, 'bill and a', self.tail.length, 'tail')

>>> tail = Tail('long')
>>> bill = Bill('wide orange')
>>> duck = Duck(bill, tail)
>>> duck.about()
This duck has a wide orange bill and a long tail

results matching ""

    No results matching ""