VB.NET的新的面向對象能力

面向對象的編程在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的一些方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章