Kế thừa cơ bản
Thuộc phần Lập trình hướng đối tượng trong hành trình Python của Coddy. Bài học 17 trên 64.
Tính kế thừa cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp khác, tạo nên mối quan hệ cha con.
Đây là ví dụ về một lớp cha:
class Animal:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am {self.name}, an animal")Tạo một lớp con kế thừa từ lớp cha:
class Dog(Animal):
pass # Kế thừa mọi thứ từ AnimalCú pháp (syntax) class Dog(Animal): có nghĩa là Dog kế thừa từ Animal. Đặt tên lớp cha trong dấu ngoặc đơn.
Tạo đối tượng từ cả hai lớp:
generic_animal = Animal("Creature")
buddy = Dog("Buddy")Sử dụng các phương thức được kế thừa:
generic_animal.info()
buddy.info()Đầu ra:
I am Creature, an animal
I am Buddy, an animalMặc dù Dog không định nghĩa __init__ hay info, Dog vẫn tự động kế thừa chúng từ Animal.
Bạn có thể thêm phương thức mới vào lớp con:
class Dog(Animal):
def bark(self):
print(f"{self.name} says Woof!")
buddy = Dog("Buddy")
buddy.info() # Phương thức kế thừa
buddy.bark() # Phương thức mớiĐầu ra:
I am Buddy, an animal
Buddy says Woof!Điểm chính: Lớp con kế thừa tất cả thuộc tính (property/attribute) và phương thức (method) từ lớp cha. Dùng cú pháp class Child(Parent): để tạo tính kế thừa (inheritance). Cách này giúp bạn tái sử dụng code và tạo hệ thống phân cấp lớp hợp lý.
Thử thách
Trung bìnhvehicle.py: Chứa lớp chaVehiclecar.py: Chứa lớpCarkế thừa từVehicledriver.py: Tệp chính để kiểm tra phần triển khai của bạn
Mỗi tệp đều có chú thích TODO chi tiết hướng dẫn bạn triển khai. Bạn cần:
- Hoàn thiện lớp
Vehiclevới các thuộc tính make và model - Triển khai kế thừa lớp phù hợp trong lớp
Car - Thiết lập các câu lệnh import chính xác giữa các tệp
- Tạo và kiểm tra các đối tượng trong tệp driver
Hãy làm theo các chú thích TODO cẩn thận vì chúng hướng dẫn từng bước để tìm lời giải.
Tự làm thử
# TODO: Nhập lớp Vehicle từ vehicle.py
# TODO: Nhập lớp Car từ car.py
# TODO: Tạo đối tượng Vehicle với make là "Toyota" và model là "Corolla"
vehicle = None
# TODO: Tạo đối tượng Car với make là "Honda" và model là "Civic"
car = None
# TODO: Gọi phương thức display_info() của đối tượng vehicle
# Đầu ra dự kiến: "Vehicle: Toyota Corolla"
# TODO: Gọi phương thức display_info() của đối tượng car
# Đầu ra dự kiến: "Vehicle: Honda Civic"
# Note: Car kế thừa display_info từ Vehicle mà không thay đổi gìBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTham số selfPhương thứcThuộc tínhPhương thức khởi tạo (__init__)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnHàm super()Ghi đè phương thứcKế thừa đa lớpThứ tự phân giải phương thứcÔn tập: hệ thống phân cấp nhân viên2Decorator
Giới thiệu về decoratorDecorator thuộc tínhDecorator phương thức tĩnhDecorator phương thức lớp5Tính đa hình
Xem lại cách ghi đè phương thứcKiểu gõ vịtLớp và phương thức trừu tượngThiết kế giao diệnÔn tập: máy tính hình học8Các khái niệm OOP nâng cao
Kết hợp và kế thừaMixinPhương thức tĩnh và phương thức lớpDecorator lớpTrình quản lý ngữ cảnhTự luyện tập: Trình biên dịch Python online