Inheritance
Trong C ++, có thể kế thừa các thuộc tính và phương thức từ lớp này sang lớp khác. Chúng tôi nhóm “khái niệm kế thừa” thành hai loại:
- lớp dẫn xuất (con) – lớp kế thừa từ lớp khác
- lớp cơ sở (cha) – lớp được kế thừa từ
Để kế thừa từ một lớp, hãy sử dụng biểu tượng:.
Trong ví dụ dưới đây, lớp Car (con) kế thừa các thuộc tính và phương thức từ lớp Vehicle (cha):
Example
// Base class class Vehicle { public: string brand = "Ford"; void honk() { cout << "Tuut, tuut! \n" ; } }; // Derived class class Car: public Vehicle { public: string model = "Mustang"; }; int main() { Car myCar; myCar.honk(); cout << myCar.brand + " " + myCar.model; return 0; }
Multilevel Inheritance
Một lớp cũng có thể được dẫn xuất từ một lớp, lớp này đã được dẫn xuất từ một lớp khác.
Trong ví dụ sau, MyGrandChild có nguồn gốc từ lớp MyChild (có nguồn gốc từ MyClass).
Example
// Base class (parent) class MyClass { public: void myFunction() { cout << "Some content in parent class." ; } }; // Derived class (child) class MyChild: public MyClass { }; // Derived class (grandchild) class MyGrandChild: public MyChild { }; int main() { MyGrandChild myObj; myObj.myFunction(); return 0; }
Access Specifiers
Bạn đã học được từ chương Bộ định nghĩa truy cập rằng có ba mã định nghĩa có sẵn trong C ++. Public (các thành viên của một lớp có thể truy cập từ bên ngoài lớp) và private (các thành viên chỉ có thể được truy cập trong lớp). Thông số thứ ba, protected, tương tự như private, nhưng nó cũng có thể được truy cập trong lớp kế thừa:
Example
// Base class class Employee { protected: // Protected access specifier int salary; }; // Derived class class Programmer: public Employee { public: int bonus; void setSalary(int s) { salary = s; } int getSalary() { return salary; } }; int main() { Programmer myObj; myObj.setSalary(50000); myObj.bonus = 15000; cout << "Salary: " << myObj.getSalary() << "\n"; cout << "Bonus: " << myObj.bonus << "\n"; return 0; }
0 / 5 - (0 Đánh Giá)