Trong lập trình C++, kế thừa là một quan hệ giữa các lớp. Một lớp con (con class) có thể kế thừa tất cả thuộc tính và phương thức của một lớp cha (base class). Điều này cho phép lập trình viên tái sử dụng mã và giảm thiểu sự lặp lại trong việc xây dựng các lớp và đối tượng. Kế thừa được sử dụng bằng từ khóa “:” trong khai báo lớp con.
Trong C++, có hai loại kế thừa: kế thừa mở (public inheritance) và kế thừa đóng (private inheritance). Khi một lớp kế thừa từ một lớp cha mở, tất cả các thuộc tính và phương thức của lớp cha đều có thể truy cập từ lớp con. Trong khi đó, khi một lớp kế thừa từ một lớp cha đóng, các thuộc tính và phương thức của lớp cha chỉ có thể truy cập từ trong lớp cha và không thể truy cập từ bên ngoài.
các bài viết liên quan
Lớp con có thể ghi đè (override) các phương thức của lớp cha và có thể thêm các thuộc tính và phương thức mới. Ngoài ra, lớp con có thể sử dụng các phương thức và thuộc tính của lớp cha bằng cách sử dụng từ khóa “base” hoặc “::”.
Ví dụ:
class Person { public: std::string name; int age; }; class Student : public Person { public: std::string major; double GPA; }; Student s; s.name = "John"; s.age = 20; s.major = "Computer Science"; s.GPA = 3.5;
Trong ví dụ này, lớp Student kế thừa từ lớp Person với kiểu kế thừa mở. Do đó, lớp Student có thể sử dụng các thuộc tính và phương thức của lớp Person.
khi nào sử dụng kế thừa trong c++
Kế thừa trong C++ được sử dụng khi một lớp có các chức năng, thuộc tính hoặc hành vi tương tự với một lớp khác, nhưng có một số thay đổi nhỏ. Kế thừa cho phép lập trình viên tái sử dụng mã và giảm thiểu sự lặp lại, giúp tăng tốc quá trình phát triển và giảm thiểu sự phức tạp của mã.
Ví dụ, nếu bạn cần tạo một lớp cho một đối tượng “nhân viên” và một lớp cho một đối tượng “giáo viên”, bạn có thể kế thừa từ một lớp “người” chung để tái sử dụng các thuộc tính và phương thức của người chung, chẳng hạn như tên, tuổi, giới tính và địa chỉ.
Kế thừa còn có thể được sử dụng để tạo ra các lớp con mở rộng các chức năng của lớp cha. Ví dụ, bạn có thể tạo ra một lớp “sinh viên” kế thừa từ lớp “nhân viên” và thêm các chức năng liên quan đến học tập, như lập kế hoạch học tập và đăng ký môn học
một số ví dụ kế thừa trong c++
Ví dụ 1: Kế thừa mở
class Shape { public: int width, height; void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } }; class Rectangle: public Shape { public: int area() { return width * height; } }; class Triangle: public Shape { public: int area() { return width * height / 2; } };
Trong ví dụ này, lớp Shape là lớp cha và lớp Rectangle và Triangle là lớp con. Lớp con kế thừa từ lớp cha với kiểu kế thừa mở, nên các thuộc tính và phương thức của lớp cha có thể truy cập từ lớp con.
Ví dụ 2: Kế thừa đóng
class Shape { protected: int width, height; public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } }; class Rectangle: private Shape { public: int area() { return width * height; } };
Trong ví dụ này, lớp Shape vẫn là lớp cha, nhưng lớp con Rectangle kế thừa từ lớp cha với kiểu kế thừa đóng. Các thuộc tính và phương thức của lớp cha chỉ có thể truy cập từ trong lớp cha và không thể truy cập từ bên ngoài.
Ngoài ra, còn có kế thừa hình học (multi-inheritance) cho phép một lớp kế thừa từ nhiều lớp cha khác nhau. Trong trường hợp này, cần sử dụng từ khóa virtual để tránh xảy ra xung đột trong kế thừa.