Lập trình .NET và C# - Lecture 5: Kế thừa, đa hình

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, ...

pdf23 trang | Chia sẻ: putihuynh11 | Lượt xem: 714 | Lượt tải: 0download
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 th c 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:

  • pdfcsharp005_694_1987442.pdf
Tài liệu liên quan