Home Giáo Trình OOP Chương 8 - THỪA KẾ - Giáo trình lập trình hướng đối tượng (OOP) - Đại học Tây Đô March 07, 2023 >Bấm vào ĐÂY để tải vềkey: Chương 8 THỪA KẾ • Liên kết tĩnh và liên kết động Kế thừa từ các lớp đã có từ trước. => Không phải định nghĩa nhiều. Thiết kế đơn giản hơn. Ích lợi: có thể tận dụng lại Các thuộc tính chung Các hàm có thao tác tương tự LỚP CHA (Lớp cơ sở) : { // khai báo lớp con LỚP CON (lớp dẫn xuất) Lớp cơ sở Thừa kế public Thừa kế private Thừa kế protected private _ _ _ public public private protected protected protected private protected // Thừa kế dạng private class B : A {....... }; // A là lớp cơ sở riêng của C class C : private A {......... }; // A là lớp cơ sở chung của D class D : public A {......... }; // A: lớp cơ sở được bảo vệ class E : protected A {.......... }; • Quyền truy xuất trong lớp con – Lớp con có tất cả thành phần (thuộc tính + phương thức) – Không thể truy xuất thành phần private của lớp cha. void GanDiem(int h,int t) void DoiDiem(int dx, { x += dx; y += dy; } class DiemMau : public Diem { int mau; public: void KTao(int h,int t,int m) { GanDiem(h,t); mau=m; } void Hien() { HienDiem(); cout<:: class LopCon:public LopCha { LopCon::LopCon():LopCha() { a = 1; } void LopCon::Hien() { cout << a << LopCha::a; } void main() { LopCon x; x.Hien(); cout << x.a << x.LopCha::a; } • Tái định nghĩa hàm thành viên – Hàm thành viên của lớp con trùng tên với hàm thành viên – Gọi hàm trùng tên => gọi hàm của lớp con. – Gọi hàm của lớp cha : ::(...) void DiemMau :: Hien() { Diem::Hien(); cout<<“ mau ”<HamThanhVien(); LopCon b; LopCon *pb=&b; //Lớp con pb->HamThanhVien(); pa= &b; //Lớp cha pa->HamThanhVien(); pb= &a; //Báo lỗi } Liên kết tĩnh và liên kết động – Cú pháp: khai báo thêm từ khóa virtual trước hàm. – Dùng chung với tính liên kết động => tính đa hình virtual void HamAo() class LopCon : public LopCha { ... public: void HamAo() { ... } }; Liên kết tĩnh và liên kết động Hàm hoàn toàn ảo Cú pháp: chỉ khai báo tên trong lớp cha và gán=0. Hàm hoàn toàn ảo phải định nghĩa lại trong lớp con. virtual void HamHT_Ao()=0; class LopCon:public LopCha { ... public: void HamHT_Ao() { ... } }; Liên kết tĩnh và liên kết động – Con trỏ đang trỏ đến đối tượng nào, khi gọi hàm ảo sẽ gọi hàm của lớp tạo ra đối tượng đó. – Tính chất của đối tượng được nhận biết khi đang thực thi. virtual void HamAo() { cout<<“Ham cua Lop Cha”; class LopCon : public LopCha{ cout<<“Ham cua Lop Con”; void main() { LopCha a; LopCha *pa=&a; pa->HamAo(); //Lớp cha LopCon b; LopCon *pb=&b; pb->HamAo(); //Lớp con pa= &b; pa->HamAo(); //Hàm lớp con pb= &a; //Báo lỗi
Post a Comment