Bài giảng Lập trình NET và C#: Lecture 5 Kế thừa- Đa hình trình bày các nội dung sau: Khái niệm kế thừa, gọi phương thức khởi dựng của cơ sở, gốc của tất cả các lớp,...Mời các bạn cùng tham khảo!
Trang 1Lập trình NET và C#
Lecture 5:
KẾ THỪA – ĐA HÌNH
TS Đào Nam Anh
UTM, Khoa KH&CN
Trang 2Cá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,
Trang 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
xem như là mặt ngược lại của tổng quát
độ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
Trang 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
Trang 5Kế thừa
Trang 6Kế thừa
Trang 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
Trang 8phươ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:
Trang 9Kế thừa
lớp ListBox thực thi một phiên bản mới của phương thức DrawWindow():
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
Trang 10Kế thừa
public class Window
{
private int top;
private int left;
public Window( int top, int left)
{
this.top = top;
this.left = left;
}
Trang 11Kế thừa
public class ListBox: Window
{
public ListBox (int top, int left, string theContents) :
base (top, left)
{
mListBoxContents = theContents;
}
}
Trang 12Kế 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
Trang 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)
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
Trang 15Đa hình
new và override
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
Trang 18Đa hình
New
của bất cứ phương thức ảo nào trong lớp
Trang 19Đa hình
abstract
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
Trang 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ó
lớp không cho phép dẫn xuất
gây ra
Trang 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.
Trang 23Question