1Lập trình .NET và C#
Lecture 5:
KẾ THỪA – ĐA HÌNH
TS Đào Nam Anh
UTM, Khoa KH&CN
2Resources
Các giải pháp lập trình C#, Nguyễn Ngọc Bình Phương - Thái Thanh Phong
Allen Jones. C# Programmer's Cookbook. Microsoft Press, 2004
John Connell. Coding Techniques for Microsoft Visual Basic .NET. Microsoft
Press, 2002.
Harvey M. Deitel, Paul J. Deitel, & Tem R. Nieto. Visual Basic .NET How to
Program, Second Edition. Prentice Hall, 2002.
Jose Mojica. C# and VB .NET Conversion Po
23 trang |
Chia sẻ: huongnhu95 | Lượt xem: 511 | Lượt tải: 0
Tóm tắt tài liệu Giáo trình Lập trình .NET và C# - Chương 5: Kế thừa-Đa hình - Đào Nam Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cket Reference. O'Reilly, 2002.
James Avery. Ten Must-Have Tools Every Developer Should Download Now.
MSDN Magazine, 2004.
Karl Moore. The Ultimate VB.NET and ASP.NET Code Book. Apress, 2003
Matthew MacDonald. Microsoft Visual Basic .NET Programmer's Cookbook.
Microsoft Press, 2003.
Mark Schmidt & Simon Robinson. Microsoft Visual C# .NET 2003 Developer's
Cookbook. Sams Publishing, 2003.
Dương Quang Thiện. Lập trình Visual C# thế nào? Nhà xuất bản Tổng Hợp TP.
Hồ Chí Minh, 2005.
Nguyễn Ngọc Bình Phương & Lê Trần Nhật Quỳnh. Các giải pháp lập trình
Visual Basic .NET. Nhà xuất bản Giao thông Vận tải, 2006
www.msdn.microsoft.com, www.codeproject.com, www.msd2d.com,
www.developersdex.com, www.windowsforms.net, www.gotdotnet.com,
www.codeguru.com, www.developerfusion.com
3Kế thừa
Quan hệ đặc biệt hóa và tổng quát hóa là hai
mối quan hệ đối ngẫu và phân cấp với nhau.
Chúng có quan hệ đối ngẫu vì đặc biệt được
xem như là mặt ngược lại của tổng quát.
Loài ngựa và mèo là trường hợp đặc biệt của
động vật có vú. Ngược lại động vật có vú là
trường hợp tổng quát từ các loài ngựa và
mèo.
4Kế thừa
Khi hai lớp chia xẻ chức năng với nhau, thì
chúng được trích ra các phần chung và đưa
vào lớp cơ sở.
Điều này hết sức có lợi, vì nó cung cấp khả
năng cao để sử dụng lại các mã nguồn
chung và dễ dàng duy trì mã nguồn.
5Kế thừa
6Kế thừa
7Kế thừa
để tạo một lớp dẫn xuất từ một lớp ta thêm
dấu hai chấm vào sau tên lớp dẫn xuất và
trước tên lớp cơ sở:
public class ListBox : Window
8Kế thừa
Gi phng thc khi dng ca
lp c s
một lớp mới tên là ListBox được dẫn xuất từ
lớp cơ sở Window, lớp ListBox có một
phương thức khởi dựng lấy ba tham số.
Trong phương thức khởi dựng của lớp dẫn
xuất này có gọi phương thức khởi dựng của
lớp cơ sở. Cách gọi được thực hiện bằng
việc đặt dấu hai chấm ngay sau phần khai
báo danh sách tham số và tham chiếu đến
lớp cơ sở thông qua từ khóa base:
9Kế thừa
lớp ListBox thực thi một phiên bản mới của
phương thức DrawWindow():
public new void DrawWindow()
Từ khóa new được sử dụng ở đây để chỉ ra
rằng người lập trình đang tạo ra một phiên
bản mới cho phương thức này bên trong lớp
dẫn xuất.
10
Kế thừa
public class Window
{
private int top;
private int left;
public Window( int top, int left)
{
this.top = top;
this.left = left;
}
}
11
Kế thừa
public class ListBox: Window
{
public ListBox (int top, int left, string theContents) :
base (top, left)
{
mListBoxContents = theContents;
}
}
12
Kế thừa
public cho phép một thành viên có thể được truy
cập bởi một phương thức thành viên của những lớp
khác.
private chỉ cho phép các phương thức thành viên
trong lớp đó truy xuất.
protected mở rộng thêm khả năng của private cho
phép truy xuất từ các lớp dẫn xuất của lớp đó.
Internal mở rộng khả năng cho phép bất cứ
phương thức của lớp nào trong cùng một khối kết
hợp (assembly) có thể truy xuất được.
internal protected cho phép các thành viên của
cùng một khối assembly hoặc các lớp dẫn xuất của
nó có thể truy cập
13
Đa hình
tính đa hình (polymorphism). từ poly là nhiều
và morph có nghĩa là form (hình thức).
Do vậy, đa hình được hiểu như là khả năng
sử dụng nhiều hình thức của một kiểu mà
không cần phải quan tâm đến từng chi tiết.
14
Đa hình
khai báo khóa virtual trong phương thức của
lớp cơ sở.
Trong lớp mở rộng: thêm từ khóa override
để chồng lên phương thức
15
Đa hình
new và override
quyết định phủ quyết một phương thức ảo
bằng cách khai báo tường minh từ khóa
override. Điều này giúp cho ta đưa ra một
phiên bản mới của chương trình và sự thay
đổi của lớp cơ sở sẽ không làm ảnh hưởng
đến chương trình viết trong các lớp dẫn xuất.
16
Đa hình
Class Window
{
public virtual void DrawWindow()
{
}
}
17
Đa hình
Class ListBox: Window
{
public override void DrawWindow()
{
base.DrawWindow();
///
}
}
18
Đa hình
New
từ khóa new, và nó không phải phủ quyết
của bất cứ phương thức ảo nào trong lớp
Window:
public class ListBox : Window
{
public new virtual Sort( ) {.}
}
19
Đa hình
abstract
Một phương thức trừu tượng không có sự
thực thi. Phương thức này chỉ đơn giản tạo
ra một tên phương thức và ký hiệu của
phương thức, phương thức này sẽ được
thực thi ở các lớp dẫn xuất.
Class Window
{
abstract public void DrawWindow( );
}
20
Đa hình
Class ListBox: Window
{
public override void DrawWindow()
{
base.DrawWindow();
///
}
}
21
Đa hình
Lp cô lp (sealed class)
Ngược với các lớp trừu tượng là các lớp cô
lập. Không cho phép các lớp dẫn xuất từ nó.
Dùng từ khóa sealed đặt trước khai báo của
lớp không cho phép dẫn xuất.
Nhằm ngăn chặn các tai nạn do sự kế thừa
gây ra.
22
Đa hình
G"c ca t#t c$ các lp: Lp Object
Tất cả các lớp của ngôn ngữ C# của bất cứ kiểu dữ
liệu nào thì cũng được dẫn xuất từ lớp
System.Object. bao gồm cả các kiểu dữ liệu giá trị.
Equal( ) So sánh bằng nhau giữa hai đối tượng
GetHashCode( ) Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử dụng tập hợp.
GetType( ) Cung cấp kiểu của đối tượng
ToString( ) Cung cấp chuỗi thể hiện của đối tượng
Finalize( ) Dọn dẹp các tài nguyên
MemberwiseClone( ) Tạo một bản sao từ đối tượng.
23
Question
Các file đính kèm theo tài liệu này:
- giao_trinh_lap_trinh_net_va_c_chuong_5_ke_thua_da_hinh_dao_n.pdf