Mô tả:
Cơ bản về C# kế thừa đa hình
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
HOCLAPTRINHWEB.COM
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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 HOCLAPTRINHWEB.COM
2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tính thừa kế (Inheritance)
•
•
Khái niệm
Xây dựng lớp kế thừa
HOCLAPTRINHWEB.COM
3
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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)
HOCLAPTRINHWEB.COM
4
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
5
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
6
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
7
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp kế thừa
•
Ví dụ 2:
Xét class cơ sở với khai báo như sau:
HOCLAPTRINHWEB.COM
8
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
9
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
10
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
11
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lớp trừu tượng (Abstract)
•
•
Khái niệm
Xây dựng lớp trừu tượng
HOCLAPTRINHWEB.COM
12
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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
HOCLAPTRINHWEB.COM
13
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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ở.
HOCLAPTRINHWEB.COM
14
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp trừu tượng
•
Cú pháp:
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:
HOCLAPTRINHWEB.COM
15
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp trừu tượng
HOCLAPTRINHWEB.COM
16
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp trừu tượng
•
Ví dụ 1:
Kết quả được xuất ra màn hình:
HOCLAPTRINHWEB.COM
17
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
18
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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:
HOCLAPTRINHWEB.COM
19
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp trừu tượng
•
Ví dụ 2:
Kết quả xuất ra màn hình:
HOCLAPTRINHWEB.COM
20
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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 .
HOCLAPTRINHWEB.COM
21
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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.
HOCLAPTRINHWEB.COM
22
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lớp niêm phong (Sealed)
•
•
Khái niệm
Xây dựng lớp niêm phong
HOCLAPTRINHWEB.COM
23
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
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ế.
HOCLAPTRINHWEB.COM
24
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp niêm phong
•
Cú pháp:
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:
HOCLAPTRINHWEB.COM
25
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp niêm phong
HOCLAPTRINHWEB.COM
26
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng lớp niêm phong
•
Ví dụ:
Kết quả xuất ra màn hình:
HOCLAPTRINHWEB.COM
27
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tính đa hình của lớp (Polymorphism)
•
•
•
Từ khóa base, this
Ghi đè (overriding)
Nạp chồng hàm (Overloading)
HOCLAPTRINHWEB.COM
28
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Từ khóa base, this
•
Từ khóa base:
Được sử dụng để tham chiếu đến lớp cơ sở từ lớp
dẫn xuất.
Ví dụ: xét lớp cơ sở nhan_vien với khai báo như sau:
HOCLAPTRINHWEB.COM
29
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Từ khóa base, this
•
Từ khóa base:
Ví dụ: xét lớp dẫn xuất nv_van_phong với khai báo
như sau:
Trong ví dụ trên, để tham chiếu đến phương thức khởi
tạo có tham số trong lớp cơ sở nhan_vien phải sử
dụng từ khóa base
HOCLAPTRINHWEB.COM
30
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Từ khóa base, this
•
Từ khóa this:
Được sử dụng để tham chiếu đến lớp hiện hành (lớp
chứa đoạn lệnh đang cài đặt).
Ví dụ: xét lớp cơ sở nhan_vien với khai báo như sau:
HOCLAPTRINHWEB.COM
31
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tính đa hình của lớp (Polymorphism)
•
•
•
Từ khóa base, this
Ghi đè (overriding)
Nạp chồng hàm (Overloading)
HOCLAPTRINHWEB.COM
32
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ghi đè (overriding)
•
Khái niệm ghi đè (overriding) được dùng để
định nghĩa lại phương thức của lớp cơ sở
(lớp cha) trong lớp dẫn xuất (lớp con kế thừa)
•
Các điểm cần lưu ý khi thực hiện ghi đè:
Phương thức ở lớp cơ sở và lớp dẫn xuất phải có
cùng dạng hàm (signature) và kiểu dữ liệu trả về
Phương thức lớp cơ sở phải được khai báo với từ
khóa virtual
Phương thức lớp dẫn xuất phải được khai báo với từ
khóa override
HOCLAPTRINHWEB.COM
33
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ghi đè (overriding)
•
Khái niệm ghi đè (overriding) được dùng để
định nghĩa lại phương thức của lớp cơ sở
(lớp cha) trong lớp dẫn xuất (lớp con kế thừa)
•
Các điểm cần lưu ý khi thực hiện ghi đè:
Phương thức ở lớp cơ sở và lớp dẫn xuất phải có
cùng dạng hàm (signature) và kiểu dữ liệu trả về
Phương thức lớp cơ sở phải được khai báo với từ
khóa virtual
Phương thức lớp dẫn xuất phải được khai báo với từ
khóa override
HOCLAPTRINHWEB.COM
34
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ghi đè (overriding)
•
Ví dụ: xét lớp
cơ sở
nhan_vien
với khai báo:
HOCLAPTRINHWEB.COM
35
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ghi đè (overriding)
•
Ví dụ: xét lớp dẫn xuất với khai báo:
Với ví dụ trên, phương thức tinh_luong trong lớp dẫn xuất được ghi đè
lên phương thức tinh_luong trong lớp cơ sở
HOCLAPTRINHWEB.COM
36
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ghi đè (overriding)
•
Lưu ý:
Các phương thức ghi đè phải trùng tên
Không thể ghi đè các phương thức tĩnh (không có từ
khóa virtual)
Phương thức, thuộc tính, chỉ mục, sự kiện đều có thể
được ghi đè bằng từ khóa virtual và override
HOCLAPTRINHWEB.COM
37
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tính đa hình của lớp (Polymorphism)
•
•
•
Từ khóa base, this
Ghi đè (overriding)
Nạp chồng hàm (Overloading)
HOCLAPTRINHWEB.COM
38
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng hàm (Overloading)
•
Cho phép khai báo các phương thức trùng
tên nhau nhưng có tham số khác nhau
•
Các điểm cần lưu ý khi thực hiện nạp chồng
hàm:
•
Tên của các phương thức phải trùng nhau
Số lượng tham số phải khác nhau
Kiểu dữ liệu của các tham số và thứ tự các tham số
phải khác nhau
Ví dụ: xét lớp nhan_vien với khai báo sau:
HOCLAPTRINHWEB.COM
39
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng hàm (Overloading)
Nạp chồng
hàm
HOCLAPTRINHWEB.COM
40
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng hàm (Overloading)
•
Nhận xét:
Trong lớp nhan_vien, có hai phương thức khởi tạo
trùng tên (cùng là nhan_vien) nhưng có số lượng
tham số khác nhau. Ta gọi hai phương thức khởi tạo
này được nạp chồng hàm (Overriding)
Tất cả các phương thức trong C# đều có thể nạp
chồng hàm.
HOCLAPTRINHWEB.COM
41
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
HOCLAPTRINHWEB.COM
42
- Xem thêm -