淺談VB.NET新的面向對象能力
VB.NET中,VB語言成為了完整的OO語言。一般說來,OO的編程語言支持四個主要的特點:
◆Abstraction抽象
◆Encapsulation封裝
◆Polymorphism多態
◆Inheritance繼承
讓我們概括的了解一下VB.NET的OO特點:
抽象:
VB從VB4開始支持抽象。面向對象的第一步是有關實體的問題。在這里,提取對象必要信息的過程我們稱為數據抽象。
封裝:
封裝允許我們隱藏類內部的完成細節。將數據和功能綁定到一起被稱為封裝。這是界面和實現分離的概念。封裝也在VB4后實現。
多態:
多態也在VB4中實現。多態是面向對象系統中允許我們有多個不同的功能用同樣名字的特性。功能的不同之處在于傳遞給它們的參數不同。事實上,VB通過兩種方式支持多態
1、通過后期綁定
2、通過多界面的執行
繼承:
.NET平臺的一個大的提高就是使用繼承的能力。VB5引入“interface inheritance”使VB開發者能夠在一定程度上擴展已有對象。但是只能訪問接口而不是底層的執行。
繼承就是一個類能夠得到一個現有的類的所有接口和行為。這樣一個類被稱為子類。
當我們構造一個新類,它繼承已有類的接口和行為,我們就創建了一個類的子類。
舉一個VB5或VB6的例子,你可以創建一個"Employee",它有一些向姓名,地址等的屬性。如果你想創建一個象 “Worker”,“ Officer”的新類或者別的什么,你不能簡單的擴展已有的Employee類。作為替代,你可以選擇復制代碼到新的對象,或者使用委派技術,在VB.NET中我們擁有完全的繼承。你可以繼承Employee類,包括所有的正確代碼包括效驗、讀取、存儲。你可以為每一個Employee添加單獨的特點。如果你需要改變標準的行為,你也可以覆蓋、重載或隱藏基類的方法和屬性。
覆蓋:
使用同樣的名字替換基類的方法或屬性。
重載:
添加新的不同參數的實現方法。
隱藏:
替換基類中同樣名字的屬性。
繼承也適用于象forms和controls之類的虛類。這可以使VB.NET創建一個基本的Form,包含corporate logos, standard menus, help systems等,然后繼承它們,創建一個特定的Form,擁有與其他Form一樣的外觀和感覺。
Option Strict On Imports System.Windows.Forms Public Class Employee Protected Count
As Int32 '' available to descendants but not public Public Overridable Sub funct1 ()
Count += 1 MessageBox.Show ("Employee funct1: " & Count.ToString, "Employee.funct1",
MessageBoxButtons.OK) End Sub Public Overridable Sub funct2() Count += 1 MessageBox.Show
("Employee funct2: " & Count.ToString, "Employee.funct2", MessageBoxButtons.OK) End Sub End
Class Public Class Officer Inherits Employee Public Overrides Sub funct2 () Count += 1
MessageBox.Show ("Officer: " & Count.ToString, "Officer.funct2", MessageBoxButtons.OK)
End Sub Public Sub special () ''The function only for Officer. Count += 1 MessageBox.Show
("Officer''s special: " & Count.ToString, "Officer.special", MessageBoxButtons.OK) End
Sub End Class Module Module1 Sub Main() Dim arun As officer arun = New officer()
officer.funct2 '' will call the method defined in Officer officer.funct1 '' will
call the method defined in Employee End Sub End Module
防止繼承:
我們創建的類默認的可以被作為基類使用。有時我想創建一個類,但是不能被繼承。
我們可以在類的聲明時添加“NotInheritable”關鍵字:
Public NotInheritable Class arungg …… End Class
當使用這個類時,沒有別的代碼可以使用Inherits關鍵字創建一個我們類的子類。
結論:
在VB.NET中,VB語言終于完整的轉變為徹底的OO語言。我們現在有完整的inheritance,以及其他的特性。VB.NET不止是提供給我們完整的面向對象的特性,也改變我們以往使用VB6的一些方法。
【編輯推薦】