# 定義一個父類
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
print(f"{self.name} is eating.")
def sleep(self):
print(f"{self.name} is sleeping.")
# 定義一個子類,繼承自Animal類
class Dog(Animal):
def __init__(self, name, breed):
# 調用父類的構造函數
super().__init__(name)
self.breed = breed
def bark(self):
print(f"{self.name} is barking!")
# 重寫父類的方法
def eat(self):
print(f"{self.name} is eating dog food.")
多態是指不同的子類對象調用相同的父類方法,產生不同的執行結果,增加了代碼的靈活性和可讀性。多態以繼承和重寫父類方法為前提,也可以通過鴨子類型來實現。鴨子類型是指不關注對象的類型,而只關注對象的行為,如果一個對象具有某種行為,就可以當作某種類型來使用。例如:
# 定義一個函數,接受一個Animal類型的參數
def animal_action(animal):
animal.eat()
animal.sleep()
# 創建一個Dog對象和一個cat對象
dog = Dog("Buddy", "Golden Retriever")
cat = Cat("Kitty", "Persian")
# 調用函數,傳入不同的對象
animal_action(dog)
animal_action(cat)
# 輸出結果:
Buddy is eating dog food.
Buddy is sleeping.
Kitty is eating cat food.
Kitty is sleeping.