1. Trang chủ
  2. » Công Nghệ Thông Tin

Thừa kế trong lập trình C

15 288 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 332 KB

Nội dung

Lập trình C Chương 4: Mảng và xâu ký tự 1 Ngôn ngữ lập trình C++ CHƯƠNG 9: THỪA KẾ  Mục tiêu  Giúp sinh viên hiểu sâu hơn về tính Thừa kế trong lập trình HĐT, cách định nghĩa lớp thừa kế và các thành phần liên quan  Nội dung  Khái niệm  Định nghĩa lớp dẫn xuất  Các thành phần thừa kế  Phạm vi truy nhập các thành phần của lớp cơ sở Lập trình C Chương 4: Mảng và xâu ký tự 2 Ngôn ngữ lập trình C++ - Lớp dẫn xuất là lớp được xây dựng bằng việc thừa kế từ một lớp khác. Lớp được thừa kế gọi là lớp cơ sở. - Một lớp có thể là dẫn xuất từ một hoặc nhiều lớp cơ sở nhưng cũng có thể là lớp cơ sở để xây dựng các lớp dẫn xuất. Ví dụ: Lớp B là lớp dẫn xuất của lớp A nhưng cũng có thể là lớp cơ sở của lớp C. Một lớp nào đó có thể được dẫn xuất từ nhiều lớp cơ sở. Khái niệm Lập trình C Chương 4: Mảng và xâu ký tự 3 Ngôn ngữ lập trình C++ Nhận xét: Một lớp dẫn xuất ngoài các thành phần của riêng nó còn được thừa kế tất cả các thành phần của các lớp cơ sở liên quan. Khái niệm Lập trình C Chương 4: Mảng và xâu ký tự 4 Ngôn ngữ lập trình C++ Cú pháp: class Tên_lớp dẫn xuất: public/ private lớp_cơ sở { khai báo các thuộc tính public: khai báo, định nghĩa các phương thức }; Trong đó: - Từ khóa public hoặc private cho biết lớp dẫn xuất thừa kế từ lớp cơ sở theo kiểu public hoặc private. - Nếu không nêu rõ public hay private thì ngầm định là private. Định nghĩa lớp dẫn xuất Lập trình C Chương 4: Mảng và xâu ký tự 5 Ngôn ngữ lập trình C++ - Nếu kế thừa theo dạng public thì tất cả các thành phần public của lớp cơ sở cũng là thành phần public của lớp dẫn xuất. - Nếu kế thừa theo dạng private thì tất cả các thành phần public của lớp cơ sở sẽ là thành phần private của lớp dẫn xuất. Định nghĩa lớp dẫn xuất Lập trình C Chương 4: Mảng và xâu ký tự 6 Ngôn ngữ lập trình C++ - Thừa kế dữ liệu: Có nghĩa là các thuộc tính của lớp cơ sở được thừa kế trong lớp dẫn xuất. - Lúc này, thuộc tính của lớp dẫn xuất = thuộc tính lớp cơ sở + thuộc tính riêng. - Tuy nhiên, trong lớp dẫn xuất không được phép truy nhập đến các thuộc tính private của lớp cơ sở. Ví dụ: Class LOP1 { kdl thuoc_tinh1.1, thuoc_tinh 1.2, …; public: … } Các thành phần thừa kế Lập trình C Chương 4: Mảng và xâu ký tự 7 Ngôn ngữ lập trình C++ class LOP2 { kdl thuoc_tinh2.1, thuoc_tinh 2.2, …; public: … } Class LOP3: public LOP2, LOP1 { kdl thuoc_tinh1, thuoc_tinh2, …; public:…. } ⇒ Hãy xác định tập thuộc tính của LOP3? Các phương thức của LOP3 được thao tác trên thuộc tính nào? Các thành phần thừa kế Lập trình C Chương 4: Mảng và xâu ký tự 8 Ngôn ngữ lập trình C++ - Thừa kế phương thức: Trừ hàm tạo, hàm hủy của lớp cơ sở. Tất cả các phương thức của lớp cơ sở đều được thừa kế trong lớp dẫn xuất. Các thành phần thừa kế Lập trình C Chương 4: Mảng và xâu ký tự 9 Ngôn ngữ lập trình C++ - Các thành phần private của lớp cơ sở không được phép truy nhập trong lớp dẫn xuất. - Do đó, nếu muốn truy nhập vào thành phần nào đó trong lớp cơ sở từ lớp dẫn xuất thì ta cần khai báo dưới dạng public hoặc protected. - Có sự khác nhau giữa public và protected. Nếu thành phần được khai báo bởi public thì được truy nhập bất cứ đâu trong chương trình. Còn khai báo bằng protected thì chỉ được truy nhập trong lớp cơ sở và lớp dẫn xuất trực tiếp. Phạm vi truy nhập đến các thành phần của lớp cơ sở Lập trình C Chương 4: Mảng và xâu ký tự 10 Ngôn ngữ lập trình C++ - Để phân biệt được các thành phần của các lớp, ta cần sử dụng tên lớp + toán tử dẫn xuất :: đặt trước tên thành phần. Ví dụ: Giả sử ta có lớp C kế thừa từ 2 lớp A và B Khi đó: C h; khai báo đối tượng thuộc lớp C h.C::n là thuộc tính n được khai báo trong C h.A::n là thuộc tính n được khai báo trong A h.A::pthuc() là phương thức trong A h.B::pthuc() là phương thức trong B Sử dụng các thành phần của lớp dẫn xuất [...]... - Xây dựng lớp HCN Gồm c c thu c tính: d, r C c phương th c nhập: nhapdl(), dientich(), chuvi() => Xây dựng lớp HHOPCN kế thừa từ lớp HCN Khai báo một đối tượng HHOPCN, hiển thị ra màn hình chuvi, diện tích đáy, diện tích toàn phần và thể tích c a nó Lập trình Clập trình C+ + Ngôn ngữ Chương 4: Mảng và xâu ký tự 11 C ch xây dựng hàm tạo c a lớp dẫn xuất - Với c c thu c tính khai báo trong lớp dẫn xuất... như thông thường - C c thành phần kiểu đối tượng Để khởi gán giá trị cho c c đối tượng này c n sử dụng hàm tạo c a lớp tương ứng - C c thu c tính kế thừa từ lớp c sở Để khởi gán cho c c thu c tính này c n sử dụng hàm tạo c a lớp c sở Lập trình Clập trình C+ + Ngôn ngữ Chương 4: Mảng và xâu ký tự 12 C ch xây dựng hàm tạo c a lớp dẫn xuất Ví dụ: Ta c lớp A: class A { double a; public: A(double x) { a=x;... { cout . tượng thu c lớp C h .C: :n là thu c tính n đư c khai báo trong C h.A::n là thu c tính n đư c khai báo trong A h.A::pthuc() là phương th c trong A h.B::pthuc() là phương th c trong B Sử dụng c c thành. …; public: … } Class LOP3: public LOP2, LOP1 { kdl thuoc_tinh1, thuoc_tinh2, …; public:…. } ⇒ Hãy x c định tập thu c tính c a LOP3? C c phương th c của LOP3 đư c thao t c trên thu c tính nào? C c thành. ngoài c c thành phần c a riêng nó c n đư c thừa kế tất c c c thành phần c a c c lớp c sở liên quan. Khái niệm Lập trình C Chương 4: Mảng và xâu ký tự 4 Ngôn ngữ lập trình C+ + C pháp: class

Ngày đăng: 20/10/2014, 16:44

TỪ KHÓA LIÊN QUAN

w