Tải bản đầy đủ (.pdf) (42 trang)

nền tảng lập trình c bài 5 tính thừa kế và đa hình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (487.92 KB, 42 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
1
HOCLAPTRINHWEB.COM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
2
HOCLAPTRINHWEB.COM
Bài 5: Tính thừa kế và Đa hình
• Tính thừa kế (Inheritance)
• Lớp trừu tượng (Abstract)
• Lớp niêm phong (Sealed)
• Tính đa hình của lớp (Polymorphism)
- 8 tiết -
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
3
HOCLAPTRINHWEB.COM
Tính thừa kế (Inheritance)
• Khái niệm
• Xây dựng lớp kế thừa
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
4
HOCLAPTRINHWEB.COM
Khái niệm
• Tính thừa kế là một khái niệm nền tảng cho
phép tái sử dụng mã lệnh đang tồn tại và điều
này giúp tiết kiệm được thời gian trong việc
lập trình
• Các class có thể thừa kế từ class khác. Class


mới được gọi là class được dẫn xuất (hay còn
gọi là class con) sẽ được quyền truy xuất đến
tất cả các thành viên dữ liệu và các phương
thức không được biểu thị private của class cơ
sở (hay còn gọi là class cha)
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
5
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Cú pháp:
Tên_class_con : Tên_class_cơ_sở
• Ví dụ 1:
 Xét class cơ sở với khai báo như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
6
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 1:
 Xét class được dẫn xuất từ class cơ sở với khai báo
như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
7
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 1:
 Kết quả xuất ra màn hình khi thực thi ví dụ trên:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC
8
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 2:
 Xét class cơ sở với khai báo như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
9
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 2:
 Xét hai class được dẫn xuất từ class cơ sở với khai báo
như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
10
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 2:
 Đoạn lệnh khai báo và khởi tạo đối tượng như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
11
HOCLAPTRINHWEB.COM
Xây dựng lớp kế thừa
• Ví dụ 2:
 Kết quả xuất ra màn hình khi thực thi đoạn lệnh trên:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

12
HOCLAPTRINHWEB.COM
Lớp trừu tượng (Abstract)
• Khái niệm
• Xây dựng lớp trừu tượng
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
13
HOCLAPTRINHWEB.COM
Khái niệm
• class trừu tượng thực chất là class cơ sở
(base class) mà các class khác có thể được
dẫn xuất từ nó.
• Các class không phải là class trừu tượng
(non-abstract class) được gọi là lớp cụ thể
(concrete class)
• class trừu tượng có thể có cả hai loại
phương thức: phương thức trừu tượng và
phương thức cụ thể.
• Một kiểu được dẫn xuất từ một lớp cơ sở
trừu tượng thừa kế tất cả các thành viên kiểu
cơ sở bao gồm sự thực thi mọi phương thức
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
14
HOCLAPTRINHWEB.COM
Khái niệm
• Khi nào thì sử dụng class trừu tượng?
 Nếu muốn tạo các class mà các class này sẽ chỉ là
các class cơ sở, và không muốn bất cứ ai tạo các đối

tượng của các kiểu class này.
 Class trừu tượng thường được dùng để biểu thị rằng
nó là class không đầy đủ và rằng nó được dự định sẽ
chỉ được dùng như là một class cơ sở.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
15
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Cú pháp:
<khai báo cấp độ truy xuất> abstract class tên_class
{
// Các thành viên của class trừu tượng.
}
• Ví dụ 1:
 Xét class trừu tượng được khai báo như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
16
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
17
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Ví dụ 1:
 Kết quả được xuất ra màn hình:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

18
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Ví dụ 2:
 Xét lớp trừu tượng và lớp dẫn xuất được khai báo như
sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
19
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Ví dụ 2:
 Xét đoạn lệnh khai báo và gọi thực thi như sau:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
20
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Ví dụ 2:
 Kết quả xuất ra màn hình:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
21
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Chú ý:
 Mục tiêu của một class trừu tượng là cung cấp định
nghĩa chung của một class cơ sở mà nhiều class được
dẫn xuất có thể chia sẻ.
 Một thành viên abstract không thể là static

 Không thể tạo một instance của class trừu tượng
 Một class trừu tượng không thể được niêm phong
(Sealed).
 Một phương thức trừu tượng không thể là private .
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
22
HOCLAPTRINHWEB.COM
Xây dựng lớp trừu tượng
• Chú ý:
 Từ khóa Override : hành động ghi đè (Overriding) là
hành động sửa đổi hoặc thay thế sự cài đặt của class
cha với một cài đặt mới. Các thành viên virtual hoặc
abstract của class cha cho phép các class dẫn xuất ghi
đè chúng.
 Phương thức abstract thực chất là một phương thức
virtual ngầm định.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
23
HOCLAPTRINHWEB.COM
Lớp niêm phong (Sealed)
• Khái niệm
• Xây dựng lớp niêm phong
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
24
HOCLAPTRINHWEB.COM
Khái niệm
• Từ khóa sealed được sử dụng để biểu thị khi

khai báo một class nhằm ngăn ngừa sự dẫn
xuất từ một class, điều này cũng giống như
việc ngăn cấm một class nào đó có class con.
• Một class sealed cũng không thể là một class
trừu tượng.
• Các structs trong C# được ngầm định sealed.
Do vậy, chúng không thể được thừa kế.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
25
HOCLAPTRINHWEB.COM
Xây dựng lớp niêm phong
• Cú pháp:
<khai báo cấp độ truy xuất> sealed class tên_class
{
// Các thành viên của class trừu tượng.
}
• Ví dụ:
 Xét class niêm phong được khai báo như sau:

×