🎭 Polymorphism - Đa Hình Siêu Thông Minh
Mục tiêu: Hiểu và sử dụng tính đa hình để viết code linh hoạt và mở rộng dễ dàng! 🎯
🤔 Polymorphism Là Gì?
Polymorphism (Đa hình) là khả năng một đối tượng có thể biểu hiện nhiều hình thái khác nhau tùy vào ngữ cảnh.
🎭 Ví Dụ Cuộc Sống
Hãy tưởng tượng một diễn viên:
- 🎬 Trong phim hành động → Là siêu anh hùng
- 🎭 Trong kịch → Là hoàng tử
- 📺 Trong quảng cáo → Là người bán hàng
Cùng một người, nhưng nhiều vai trò khác nhau!
🐾 Ví Dụ Cơ Bản: Động Vật
class Animal:
"""Class cơ sở cho tất cả động vật"""
def __init__(self, name, animal_type):
self.name = name
self.animal_type = animal_type
def make_sound(self):
"""Phương thức base - sẽ được override"""
print(f"{self.name} phát ra âm thanh")
def move(self):
"""Phương thức chung"""
print(f"{self.name} đang di chuyển")
class Dog(Animal):
"""Class chó kế thừa từ Animal"""
def __init__(self, name):
super().__init__(name, "Chó")
def make_sound(self):
"""Override - Chó kêu khác"""
print(f"{self.name}: Gâu gâu! 🐕")
def move(self):
print(f"{self.name} chạy bằng 4 chân 🏃♂️")
class Cat(Animal):
"""Class mèo"""
def __init__(self, name):
super().__init__(name, "Mèo")
def make_sound(self):
print(f"{self.name}: Meo meo! 🐱")
def move(self):
print(f"{self.name} đi nhẹ nhàng, thầm lặng 🥷")
class Bird(Animal):
"""Class chim"""
def __init__(self, name):
super().__init__(name, "Chim")
def make_sound(self):
print(f"{self.name}: Chip chip! 🐦")
def move(self):
print(f"{self.name} bay lên trời cao 🕊️")
# Đây là POLYMORPHISM!
def make_animal_perform(animal):
"""Hàm này nhận bất kỳ loại động vật nào"""
print(f"🎪 Mời {animal.name} ({animal.animal_type}) biểu diễn:")
animal.make_sound() # Polymorphic call
animal.move() # Polymorphic call
print("-" * 40)
# Demo polymorphism
print("🎪 BUỔI BIỂU DIỄN ĐỘNG VẬT")
print("=" * 50)
# Tạo danh sách các động vật khác nhau
animal_list = [
Dog("Vàng"),
Cat("Mun"),
Bird("Pi"),
Dog("Lucky"),
Cat("Kitty")
]
# Polymorphism: Cùng một hàm, nhưng hành vi khác nhau!
for animal in animal_list:
make_animal_perform(animal)