Tài liệu Lập trình .NET và C# - Lecture 5: Kế thừa, đa hình: 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 Pocket 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, ...
                
              
                                            
                                
            
 
            
                 23 trang
23 trang | 
Chia sẻ: putihuynh11 | Lượt xem: 864 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Lập trình .NET và C# - Lecture 5: Kế thừa, đa hình, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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 Pocket 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:
 csharp005_694_1987442.pdf csharp005_694_1987442.pdf