# 物件導向 Object Orient Programming ## 概念 * Abstraction(抽象) * Modularity(模組化):將大問題分成許多小問題 ### Class(類別) * 定義物件 * 由欄位(fields)和方法(methods)組成 ### Object(物件) * 把 Class 實例出來 ## 目的 * 穩定一致 * 可調整 * 重複使用 ## 特性 * Encapsulation(封裝):只需要會使用,不用知道內部結構 * Inheritance(繼承):子類別繼承父類別。目的:重複使用 code ``` Class Human: def __init__(self, name): self.name = name def watch(self): return "I can watch." def talk(self): return "I can talk." Class Player(Human): def __init__(self, name, record): super().__init__(name) self.record = record def shoot(self): return "I shoot a basketball." ``` * Polymorphism(多型):多個相同名稱的方法,傳入不同的參數,會執行不同的敘述,包含多載(Overloading)和複寫(Overriding) * Overloading(多載):在相同類別中,定義名稱相同,但是參數個數不同,或是參數型態不同的函式。 ``` Class Player(Human): def __init__(self, name, record): super().__init__(name) self.record = record def shoot(self): return "I shoot a basketball." def shoot(self, a): return f"I shoot and get {a} point(s)" *shoot 名字一樣,給的參數個數不同 ``` * Overriding(複寫):指在子類別中,覆寫掉父類別中的函式。 ``` Class Human: def jump(self): return "I jump." Class Player(Human): def jump(self): return "I can really jump high" *A player jump in a different way ``` 參考資料:https://totoroliu.medium.com/物件導向-object-oriented-programming-概念-5f205d437fd6