← til
Rails / Ruby Thursday, 14 May 2026

Kế thừa trong Ruby

Kế thừa như là uỷ quyền trả lời message. Nếu object không thể thực hiện message thì nó sẽ tìm trong cây phả hệ các lớp cha xem có kiến thức gì về message này không.

Dùng kế thừa khi có nhiều kiểu mang cùng điểm tương đồng, kiểu như một dạng chuyên biệt của một cái gì đó chung chung hơn ví dụ như xe đạp thì có nhiều loại như xe địa hình, xe đi trong phố, xe em bé,… người dùng thì có khách, admin, nhân viên,…

Tạo kế thừa theo kiểu đẩy trừu tượng từ lớp chuyên biệt lên lớp cha.

Phải luôn nhớ, phụ thuộc khiến các đối tượng dính vào nhau, làm cho việc thay đổi khó khăn hơn và dễ bị ảnh hưởng qua lại. Khi cảm thấy lớp con phụ thuộc quá nhiều vào lớp cha ví dụ khi khởi tạo nó phải gọi tới super (biết lớp cha làm gì) thì có thể dùng template pattern hoặc hook.

Ví dụ trong initialize của lớp con có gán vài thuộc tính chuyên biệt của nó và gọi super để gán thuộc tính chung thì có thể dùng hook post_initialize để gán những thuộc tính chuyên biệt này. Lớp con giờ không cần biết lớp cha khởi tạo như thế nào nữa, cái gì của riêng nó thì nằm trong hook.

Khi tạo lớp con mới thì chỉ cần làm theo các lớp con có sẵn và tạo method tương ứng là được, không bị lỗi, không cần nhiều kiến thức, dễ thay đổi.