Những chức năng Đối Tượng mới của VB.NET (phần III)
Số trang: 11
Loại file: pdf
Dung lượng: 210.03 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Những chức năng Đối Tượng mới của VB.NET (phần III)Dùng OO trong VB.NET Ngăn cản Thừa kếBình thường (By default) class nào cũng có thể được dùng làm base class để từ đó ta thừa kế. Nhưng đôi khi ta không muốn cho ai thừa kế từ một Class nào đó, để làm việc ấy ta dùng keyword NotInheritable khi declare class:Public NotInheritable Class KhôngCon End ClassKhi ta đã dùng keyword NotInheritable rồi thì không class nào có thể dùng keyword Inherits để tạo một subclass từ class ấy.Thừa kế và Phạm vi hoạt độngKhi ta dùng đặc...
Nội dung trích xuất từ tài liệu:
Những chức năng Đối Tượng mới của VB.NET (phần III) Bài 6 Những chức năng Đối Tượng mới của VB.NET (phần III)Dùng OO trong VB.NETNgăn cản Thừa kếBình thường (By default) class nào cũng có thể được dùng làm base class để từđó ta thừa kế. Nhưng đôi khi ta không muốn cho ai thừa kế từ một Class nào đó,để làm việc ấy ta dùng keyword NotInheritable khi declare class:Public NotInheritable Class KhôngConEnd ClassKhi ta đã dùng keyword NotInheritable rồi thì không class nào có thể dùngkeyword Inherits để tạo một subclass từ class ấy.Thừa kế và Phạm vi hoạt độngKhi ta dùng đặc tính thừa kế để tạo một SubClass thì class mới nầy có đủ mọimethods, propertỉes và variables với Access Modifier Public hay Friend củaSuperClass. Bất cứ thứ gì declared là Private trong SuperClass thì SubClasskhông thấy hay dùng được. Có một ngoại lệ là New method. Các Constructor methods cần phải được implemented (định nghĩa) lại trong mỗi SubClass. Một chốc nữa ta sẽ bàn vào chi tiết về điểm nầy.Để làm sáng tỏ vấn đề SubClass có thể dùng Class Members nào của SuperClass,ta thử code lại Function Amount trong LineItem class bằng cách khiến nó gọimột Private Function tên CalculateAmount để tính ra Amount thay vì để nótính trực tiếp như trước đây:Public Function Amount() As Single Return CalculateAmountEnd FunctionPrivate Function CalculateAmount() As Single Return mintQuantity * msngPriceEnd FunctionKhi ta SubClass LineItem để tạo ra ServiceLine class, bất cứ Object ServiceLinenào cũng thừa kế Function Amount vì Function ấy được declared Public trongBaseClass LineItem. Ngược lại, vì Function CalculateAmount là Private nên cảServiceLine class lẫn bất cứ client code nào dùng một LineItem Object đềukhông truy cập nó được.Như thế, mặc dầu ta gọi Function Amount được, nhưng đến phiên nó gọi PrivateFunction CalculateAmount thì có bị trở ngại không? Không sao cả. Vì FunctionAmount nằm trong cùng Class với Private Function CalculateAmount nên nó cóthể gọi được, dù rằng ta gọi Function Amount từ ServiceLine hay client code.Thí dụ trong client code ta có những hàng code như sau:Protected Sub BtnShowAmount_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) HandlesBtnShowAmount.Click Dim Service As ServiceLine Service = New ServiceLine() Service.Item = Delivery Service.Price = 50 Service.DateProvided = Now MessageBox.Show (Service.Amount.ToString, Amount,MessageBoxButtons.OK, MessageBoxIcon.Information)End SubKết quả sẽ được hiển thị trong message box, cho thấy Function CalculateAmountđược Function Amount gọi dùm cho client code dù rằng cả client code lẫnServiceLine code đều không thể gọi trực tiếp được.Điểm nầy nhắc tôi nhớ lại khi còn bé, có lần bà con trong vườn đem ra chợ choba má tôi cả thúng xoài thơm rất ngon. Bạn tôi ở lối xóm thấy vậy biểu tôi lénlấy hai trái xoài để ăn vụn. Vì không phải là người nhà nên bạn tôi không thể lấyđuợc xoài, bởi Access Modifier của thún xoài là Private trong nhà tôi. Nhưng vìtôi là Public, nên bạn tôi có thể nhờ tôi lấy dùm.Protected MethodsĐôi khi Public hay Private thôi chưa đủ. Nếu ta declare thứ gì Private thì nóhoàn toàn giới hạn trong class, ngược lại nếu ta declare nó Public (hay Friend)thì nó có thể được dùng trong subclasses hay client code.Tuy nhiên, có lúc ta muốn một class member chỉ có thể được dùng trongsubclasses thôi, chớ không cho client code dùng. Trong trường hợp ấy ta dùngkeyword Protected. Thí dụ:Public Class FatherClass Protected DiSản As SingleEnd ClassPublic Class SonClass Inherits FatherClass Public Function ChiaCủa() As Single Return Disản End FunctionEnd ClassỞ đây ta có BaseClass FatherClass với Protected Field Disản. Không có clientcode nào có thể thấy Field DiSản được. Thế nhưng bất cứ SubClass nào củaFatherClass cũng đều thừa kế và dùng được DiSản.Trong thí dụ trên, một lần nữa SubClass có một Public method (ChiaCủa) có thểreturn một protected value - nhưng chính value ấy, DiSản, không trực tiếp chophép client code dùng.Overriding MethodsChúng ta biết rằng đặc tính quan trọng của Inheritance là một SubClass chẳngnhững thừa kế behaviours của ParentClass mà còn có thể override (lấn quyền)các behaviours ấy nữa. Chúng ta đã thấy một SubClass có thể extend (thêm ra)ParentClass bằng cách cho thêm các methods Public, Protected và Friend. Hơnnữa, khi dùng overriding, một SubClass có thể alter (sửa đổi) behaviours củacác methods trong ParentClass.Bình thường (By default), ta không thể override methods trong ParentClass trừkhi các methods ấy được declared với keyword Overridable trong ParentClass.Thí dụ:Public Class ClassCha Public Overridable Sub ChàoHỏi() MessageBox.Show(Chào các cháu, Class Cha) End SubEnd ClassTiếp theo, khi tạo một SubClass, nếu muốn ta có thể override b ...
Nội dung trích xuất từ tài liệu:
Những chức năng Đối Tượng mới của VB.NET (phần III) Bài 6 Những chức năng Đối Tượng mới của VB.NET (phần III)Dùng OO trong VB.NETNgăn cản Thừa kếBình thường (By default) class nào cũng có thể được dùng làm base class để từđó ta thừa kế. Nhưng đôi khi ta không muốn cho ai thừa kế từ một Class nào đó,để làm việc ấy ta dùng keyword NotInheritable khi declare class:Public NotInheritable Class KhôngConEnd ClassKhi ta đã dùng keyword NotInheritable rồi thì không class nào có thể dùngkeyword Inherits để tạo một subclass từ class ấy.Thừa kế và Phạm vi hoạt độngKhi ta dùng đặc tính thừa kế để tạo một SubClass thì class mới nầy có đủ mọimethods, propertỉes và variables với Access Modifier Public hay Friend củaSuperClass. Bất cứ thứ gì declared là Private trong SuperClass thì SubClasskhông thấy hay dùng được. Có một ngoại lệ là New method. Các Constructor methods cần phải được implemented (định nghĩa) lại trong mỗi SubClass. Một chốc nữa ta sẽ bàn vào chi tiết về điểm nầy.Để làm sáng tỏ vấn đề SubClass có thể dùng Class Members nào của SuperClass,ta thử code lại Function Amount trong LineItem class bằng cách khiến nó gọimột Private Function tên CalculateAmount để tính ra Amount thay vì để nótính trực tiếp như trước đây:Public Function Amount() As Single Return CalculateAmountEnd FunctionPrivate Function CalculateAmount() As Single Return mintQuantity * msngPriceEnd FunctionKhi ta SubClass LineItem để tạo ra ServiceLine class, bất cứ Object ServiceLinenào cũng thừa kế Function Amount vì Function ấy được declared Public trongBaseClass LineItem. Ngược lại, vì Function CalculateAmount là Private nên cảServiceLine class lẫn bất cứ client code nào dùng một LineItem Object đềukhông truy cập nó được.Như thế, mặc dầu ta gọi Function Amount được, nhưng đến phiên nó gọi PrivateFunction CalculateAmount thì có bị trở ngại không? Không sao cả. Vì FunctionAmount nằm trong cùng Class với Private Function CalculateAmount nên nó cóthể gọi được, dù rằng ta gọi Function Amount từ ServiceLine hay client code.Thí dụ trong client code ta có những hàng code như sau:Protected Sub BtnShowAmount_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) HandlesBtnShowAmount.Click Dim Service As ServiceLine Service = New ServiceLine() Service.Item = Delivery Service.Price = 50 Service.DateProvided = Now MessageBox.Show (Service.Amount.ToString, Amount,MessageBoxButtons.OK, MessageBoxIcon.Information)End SubKết quả sẽ được hiển thị trong message box, cho thấy Function CalculateAmountđược Function Amount gọi dùm cho client code dù rằng cả client code lẫnServiceLine code đều không thể gọi trực tiếp được.Điểm nầy nhắc tôi nhớ lại khi còn bé, có lần bà con trong vườn đem ra chợ choba má tôi cả thúng xoài thơm rất ngon. Bạn tôi ở lối xóm thấy vậy biểu tôi lénlấy hai trái xoài để ăn vụn. Vì không phải là người nhà nên bạn tôi không thể lấyđuợc xoài, bởi Access Modifier của thún xoài là Private trong nhà tôi. Nhưng vìtôi là Public, nên bạn tôi có thể nhờ tôi lấy dùm.Protected MethodsĐôi khi Public hay Private thôi chưa đủ. Nếu ta declare thứ gì Private thì nóhoàn toàn giới hạn trong class, ngược lại nếu ta declare nó Public (hay Friend)thì nó có thể được dùng trong subclasses hay client code.Tuy nhiên, có lúc ta muốn một class member chỉ có thể được dùng trongsubclasses thôi, chớ không cho client code dùng. Trong trường hợp ấy ta dùngkeyword Protected. Thí dụ:Public Class FatherClass Protected DiSản As SingleEnd ClassPublic Class SonClass Inherits FatherClass Public Function ChiaCủa() As Single Return Disản End FunctionEnd ClassỞ đây ta có BaseClass FatherClass với Protected Field Disản. Không có clientcode nào có thể thấy Field DiSản được. Thế nhưng bất cứ SubClass nào củaFatherClass cũng đều thừa kế và dùng được DiSản.Trong thí dụ trên, một lần nữa SubClass có một Public method (ChiaCủa) có thểreturn một protected value - nhưng chính value ấy, DiSản, không trực tiếp chophép client code dùng.Overriding MethodsChúng ta biết rằng đặc tính quan trọng của Inheritance là một SubClass chẳngnhững thừa kế behaviours của ParentClass mà còn có thể override (lấn quyền)các behaviours ấy nữa. Chúng ta đã thấy một SubClass có thể extend (thêm ra)ParentClass bằng cách cho thêm các methods Public, Protected và Friend. Hơnnữa, khi dùng overriding, một SubClass có thể alter (sửa đổi) behaviours củacác methods trong ParentClass.Bình thường (By default), ta không thể override methods trong ParentClass trừkhi các methods ấy được declared với keyword Overridable trong ParentClass.Thí dụ:Public Class ClassCha Public Overridable Sub ChàoHỏi() MessageBox.Show(Chào các cháu, Class Cha) End SubEnd ClassTiếp theo, khi tạo một SubClass, nếu muốn ta có thể override b ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kỹ thuật máy tính lập trình quản trị mạng tin học vi tính Những chức năng Đối Tượng mới của VB.NET (phần III)Gợi ý tài liệu liên quan:
-
52 trang 430 1 0
-
24 trang 355 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 314 0 0 -
74 trang 299 0 0
-
96 trang 293 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 281 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 275 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Tài liệu hướng dẫn sử dụng thư điện tử tài nguyên và môi trường
72 trang 265 0 0