1. 封裝(Encapsulation)
說明:
封裝是指將物件的數據(屬性)和操作數據的方法(行為)捆綁在一起,形成一個獨立的單位。這樣,物件的內部狀態只能通過物件的方法來訪問和修改,從而保護數據的完整性和安全性。
例子:
假設我們有一個表示銀行帳戶的類別 BankAccount:
python
複製程式碼
class BankAccount:
def __init__(self, account_number, balance):
self.__account_number = account_number # 私有屬性
self.__balance = balance # 私有屬性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
在這個例子中,__account_number 和 __balance 是私有屬性,只有通過 deposit、withdraw 和 get_balance 方法才能訪問和修改它們,這就是封裝的體現。
2. 繼承(Inheritance)
說明:
繼承是指一個類別(子類別)可以從另一個類別(父類別)繼承屬性和方法。這使得子類別可以重用父類別的代碼,並且可以在子類別中添加新的屬性和方法或修改現有的方法。
例子:
假設我們有一個表示動物的父類別 Animal 和一個表示狗的子類別 Dog:
python
複製程式碼
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
return "Some sound"
class Dog(Animal): # Dog 繼承自 Animal
def __init__(self, name, breed):
super().__init__(name) # 呼叫父類別的初始化方法
self.breed = breed
def make_sound(self): # 重寫父類別的方法
return "Bark"
dog = Dog("Buddy", "Golden Retriever")
print(dog.name) # 繼承自 Animal
print(dog.breed) # Dog 自己的屬性
print(dog.make_sound()) # 重寫的方法
在這個例子中,Dog 繼承了 Animal 的屬性和方法,但也可以添加自己的屬性 breed 並重寫方法 make_sound。
3. 多態(Polymorphism)
說明:
多態是指不同類別的物件可以通過相同的接口呼叫相同的方法,即使這些方法在不同類別中的具體實現不同。這使得可以用統一的方式處理不同類別的物件,提高程式的靈活性和可擴展性。
例子:
假設我們有一個表示動物的父類別 Animal 和兩個子類別 Cat 和 Dog:
python
複製程式碼
class Animal:
def make_sound(self):
pass
class Cat(Animal):
def make_sound(self):
return "Meow"
class Dog(Animal):
def make_sound(self):
return "Bark"
def make_animal_sound(animal):
print(animal.make_sound())
cat = Cat()
dog = Dog()
make_animal_sound(cat) # 輸出 "Meow"
make_animal_sound(dog) # 輸出 "Bark"
在這個例子中,make_animal_sound 函數接受一個 Animal 類別的物件,但由於 Cat 和 Dog 都繼承自 Animal,並且重寫了 make_sound 方法,所以可以傳入 Cat 和 Dog 的物件,並且輸出不同的聲音,這就是多態的體現。
- 封裝: 封裝通過將數據和行為捆綁在一起,保護數據的完整性和安全性。
- 繼承: 繼承允許類別重用其他類別的代碼,並在子類別中添加新的屬性和方法或修改現有的方法。
- 多態: 多態允許不同類別的物件通過相同的接口呼叫相同的方法,提高程式的靈活性和可擴展性。
這些特點使得物件導向程式設計更具模塊化、可重用性和可維護性,是現代軟體開發中的重要技術。