Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Bài giảng Kỹ thuật lập trình: Bài 9 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Khái niệm kế thừa, kế thừa public, kế thừa private, thành phần protected, tổng kết các kiểu kế thừa, constructor và destructor trong kế thừa,. | Bài 9: Kế thừa (Inheritance) 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm Để quản lý nhân sự của công ty, ta có thể định nghĩa các lớp tương ứng với các vị trí làm việc của công ty: class Worker { private: string name; float salary; int level; public: string getName() {.} void pay() {.} void doWork() {.} . }; class Manager { private: string name; float salary; int dept; public: string getName() {.} void pay() {.} void doWork() {.} . }; class Director { private: string name; float salary; public: string getName() {.} void pay() {.} void doWork() {.} . }; Cả 3 lớp trên đều có những biến và hàm giống hệt nhau về nội dung tạo ra một lớp Employee chứa các thông tin chung đó để sử dụng lại Giảm số code cần viết Dễ bảo trì, sửa đổi về sau 2 Sử dụng lại code Rõ ràng hơn về mặt logic trong thiết kế chương trình EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm (tiếp) Lớp mẹ (hay lớp cơ sở) Các lớp con (hay lớp dẫn xuất) Worker Employee Manager Director Hai hướng thừa kế: Cụ thể hoá: lớp con là một trường hợp riêng của lớp mẹ (như ví dụ trên) Tổng quát hoá: mở rộng lớp mẹ (vd: Point2D thêm biến z để thành Point3D) Kế thừa cho phép các lớp con sử dụng các biến và phương thức của lớp mẹ như của nó, trừ các biến và phương thức private Kế thừa với public và private: 3 public: các thành phần public của lớp mẹ vẫn là public trong lớp con private: toàn bộ các thành phần của lớp mẹ trở thành private của lớp con EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Kế thừa public class Employee { private: string name; float salary; public: . string getName() {.} void pay() {.} }; class Worker : public Employee { private: int level; public: . void doWork() {.} void show() { cout << getName() << salary; // lỗi } }; Worker .