物件導向的編程在VB4.0以後的版本已經使用。不幸的是,一些物件導向的特點比如說繼承、方法重載、方法覆蓋等並沒有實現。
在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的一些方法。