Bài giảng Lập trình hướng đối tượng: Bài 6 - Phạm Thị Bích Vân
lượt xem 1
download
Bài 6 cung cấp kiến thức về kế thừa trong lập trình hướng đối tượng. Nội dung trình bày trong bài gồm: Khái niệm kế thừa, xây dựng lớp dẫn xuất, quyền truy xuất, các thành viên protected, các thành phần không kế thừa, hàm hủy, đa kế thừa. Mời các bạn tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Bài 6 - Phạm Thị Bích Vân
- Bài 6: Kế thừa
- Khái niệm kế thừa • Kế thừa là khả năng cho phép xây dựng một lớp mới: ▫ Được thừa hưởng các thành phần từ một hay nhiều lớp đã có (lớp cơ sở). ▫ Trong lớp ta có thể bổ sung thêm các thành phần hoặc định nghĩa lại các thành phần • Ví dụ. ▫ Xây dựng lớp PS1 {ts, ms, nhập, in, tối giản} ▫ Lớp PS2 {ts, ms, nhập, in, tối giản, cộng, trừ, nhân chia phân số}
- Khái niệm kế thừa • Ví dụ 2: NGƯỜI • Xây dựng ba lớp sau: Dl: ht, ns, gt ▫ Lớp người Pt: nhap(),in() ▫ Lớp SinhVien ▫ Lớp GiaoVien SV GV Dl: ht, ns, gt Dl: ht, ns, gt Pt: nhap(), Pt: nhap(), in(), xếp in(), loại() tangluong()
- Khái niệm kế thừa • Kế thừa tạo ra mô hình phân cấp: PS1 NGƯỜI PS2 SV GV • Lớp được kế thừa: Lớp cơ sở, lớp cha. • Lớp kế thừa: Lớp dẫn xuất, lớp con.
- Khái niệm kế thừa • Các loại kế thừa: A B PS1 PS2 C • Đơn kế thừa: chỉ có một lớp cơ sở
- Xây dựng lớp dẫn xuất Cú pháp class :[kiểu dẫn xuất] ,[kiểu dẫn xuất] ….. { // Các thành phần của lớp con };
- Ví dụ
- Ví dụ
- Xây dựng lớp dẫn xuất Trong đó: public § Kiểu dẫn xuất có thể là: protected private (ngầm định) § public: tất cả các tp public của lớp cha sẽ là public ở lớp con. § private: tất cả các thành phần public của lớp cha sẽ là private ở lớp con § Kiểu dẫn xuất mặc đinh là private.
- Xây dựng lớp dẫn xuất § Kế thừa các thuộc tính: § Các thuộc tính của lớp cơ sở được kế thừa trong lớp dẫn xuất. § Trong lớp dẫn xuất không cho phép truy nhập đến các thuộc tính private của lớp cơ sở. § Cho phép đặt tên các thuộc tính trùng. § Kế thừa phương thức: § Trừ: Hàm tạo, hàm hủy, toán tử gán.
- Quyền truy xuất. (1) Quyền truy xuất tp đó ở lớp cha : (2) Kiểu dẫn xuất (1) private protected public (2) private private private private protected private protected protected public private protected public Quyền truy xuất ở lớp con
- Các thành viên protected § Các thành viên public của một lớp cơ sở. § Các thành viên private của một lớp cơ sở. § Các thành viên protected của một lớp cơ sở chỉ được truy cập bởi các hàm thành viên và các hàm bạn của lớp cơ sở và lớp dẫn xuất.
- Xây dựng lớp dẫn xuất • Định nghĩa lại thành viên của lớp cơ sở ở lớp dẫn xuất: ▫ Lớp dẫn xuất có thể định nghĩa lại hàm thành viên của lớp cơ sở (gọi là ghi đè). ▫ Muốn gọi hàm của lớp cơ sở, dùng toán tử định phạm vi (::) ▫ Ví dụ: … Void SinhVien::Nhap() { Nguoi::Nhap();
- Các thành phần không kế thừa § constructors § destructors § friend functions § overloaded new operators § overloaded = operators § Class friendship is not inherited
- Ví dụ § Xây dựng lớp số phức Gồm: phần thực, phần ảo Phương thức: nhập, in § Xây dựng lớp SP1 kế thừa lớp SP Bổ sung: +, , * Hàm main: Nhập 2 số phức a,b. Tính và in a+b, a*b, modul
- Hàm khởi tạo Hàm khởi tạo của lớp cha không được kế thừa Mỗi đối tượng của lớp con có thể coi là một đối tượng của lớp cha => khi gọi hàm khởi tạo của lớp con sẽ kéo theo gọi hàm khởi tạo của lớp cha § Thứ tự gọi: Hàm khởi tạo lớp cha Hàm khởi tạo lớp con
- Ví dụ class DIEM class HINH_TRON : public DIEM { { private: private: double x, y; double r; public: public: DIEM() HINH_TRON() { { x = y =0.0; r = 0.0; } } DIEM(double x1, double y1) HINH_TRON(double x1, double y1, { double r1): DIEM(x1,y1) x = x1; y = y1; { } r = r1; void in() } { … cout
- Hàm khởi tạo § Nếu xây dựng hàm khởi tạo của lớp con: § Phải gọi hàm khởi tạo của lớp cha tường minh § Cú pháp: ([tham số]):([tham số]) { } § Chú ý: § Hàm khởi tạo lớp cơ sở thực hiện trước § Nếu lớp dẫn xuất có nhiều lớp cơ sở thì trình tự thực hiện tuân theo trình tự kế thừa.
- Hàm hủy Hàm huỷ của lớp cơ sở không được kế thừa Các hàm huỷ được thi hành theo trình tự ngược lại so với hàm khởi tạo Hàm huỷ của lớp dẫn xuất thi hành trước hàm huỷ của lớp cơ sở
- Đa kế thừa Khái niệm • Là khả năng xây dựng lớp dẫn xuất kế thừa từ nhiều hơn một lớp cơ sở • Đa kế thừa có thể là tính năng rất mạnh nhưng đôi khi gây ra một số vấn đề
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn