Tính thừa kế - Class con (subclass)
Tính thừa kết giúp chúng ta tiết kiệm công sức viết code, bằng cách để cho các class con (subclass) thừa hưởng các tính chất của class cha (superclass). Trong bài viết này chúng ta sẽ tìm hiểu về cách triển khai tính thừa kế trong C++.
Định nghĩa subclass
Để định nghĩa subclass, ta sử dụng cú pháp
Trong đó kiểu thừa kế có thể là
public, protected, hoặc private.
Ví dụ: Chương trình sau có 2 class Person và
Student, trong đó Student là subclass của Person, do đó Student thừa hưởng hai biến name và age của Person.
Sau khi định nghĩa subclass xong, ta lại có thể tiếp tục định nghĩa subclass của nó nữa. Ví dụ như class
NguyenDinhTai sau đây là subclass của Student.
Một object khi thuộc về một class thì cũng sẽ thuộc về tất cả các superclass của class đó. Để dễ hình dung thì “Nếu bạn Nguyễn Đình Tài là sinh viên chắc chắn bạn ấy là người :v”.
Person per = new Student();
Quyền truy cập
Subclass có quyền truy cập tới tất cả các yếu tố
public và protected của superclass.Quyền thừa kế
Quyền truy cập của các yếu tố mà subclass được thừa kế sẽ phụ thuộc vào kiểu thừa kế của subclass đối với superclass.
- Nếu kiểu thừa kế là
public, tất cả các yếu tốpublicvàprotectedcủa superclass sẽ giữ nguyên quyền truy cập khi thừa kế xuống subclass. - Nếu kiểu thừa kế là
protected, tất cả các yếu tốpublicvàprotectedcủa superclass sẽ trở thànhprotectedcủa subclass. - Nếu kiểu thừa kế là
private, tất cả các yếu tốpublicvàprotectedcủa superclass sẽ trở thànhprivatecủa subclass.
Kiểu thừa kế giống như là việc co gọn quyền truy cập khi xuống tới subclass vậy.
Subclass sẽ không được thừa hưởng các yếu tố sau:
- constructor, destructor và copy constructor của superclass.
- Các toán tử đã bị viết đè (overload) ở class cha. Ta sẽ nghiên cứu thêm về overload trong bài viết tiếp theo.
Thừa kế từ nhiều class
Một class trong C++ có thể được thừa kế từ nhiều superclass, chỉ cần liệt kê danh sách các class thừa kế ở trong định nghĩa của nó.
Ví dụ ở trong chương trình sau, class
Student được thừa kế từ hai class Person và Hobbies, nên có thể sử dụng được 3 biến age , name, hobby
Kết quả:

Nhận xét
Đăng nhận xét