VB.NET面向?qū)ο笳宫F(xiàn)新能力
VB.NET這樣一款由微軟公司推出的編程語言,其功能是比較強(qiáng)大的。尤其是在面向?qū)ο蠓矫?,展現(xiàn)了非常重要的作用。面向?qū)ο蟮木幊淘赩B4.0以后的版本已經(jīng)使用。不幸的是,一些VB.NET面向?qū)ο蟮奶攸c(diǎn)比如說繼承、方法重載、方法覆蓋等并沒有實(shí)現(xiàn)。#t#
VB.NET中,VB語言成為了完整的OO語言。一般說來,OO的編程語言支持四個(gè)主要的特點(diǎn):
◆Abstraction抽象
◆Encapsulation封裝
◆Polymorphism多態(tài)
◆Inheritance繼承
讓我們概括的了解一下VB.NET的OO特點(diǎn):
抽象:
VB從VB4開始支持抽象。VB.NET面向?qū)ο蟮牡谝徊绞怯嘘P(guān)實(shí)體的問題。在這里,提取對(duì)象必要信息的過程我們稱為數(shù)據(jù)抽象。
封裝:
封裝允許我們隱藏類內(nèi)部的完成細(xì)節(jié)。將數(shù)據(jù)和功能綁定到一起被稱為封裝。這是界面和實(shí)現(xiàn)分離的概念。封裝也在VB4后實(shí)現(xiàn)。
多態(tài):
多態(tài)也在VB4中實(shí)現(xiàn)。多態(tài)是VB.NET面向?qū)ο笙到y(tǒng)中允許我們有多個(gè)不同的功能用同樣名字的特性。功能的不同之處在于傳遞給它們的參數(shù)不同。事實(shí)上,VB通過兩種方式支持多態(tài)
1、通過后期綁定
2、通過多界面的執(zhí)行
繼承:
.NET平臺(tái)的一個(gè)大的提高就是使用繼承的能力。VB5引入“interface inheritance”使VB開發(fā)者能夠在一定程度上擴(kuò)展已有對(duì)象。但是只能訪問接口而不是底層的執(zhí)行。
繼承就是一個(gè)類能夠得到一個(gè)現(xiàn)有的類的所有接口和行為。這樣一個(gè)類被稱為子類。
當(dāng)我們構(gòu)造一個(gè)新類,它繼承已有類的接口和行為,我們就創(chuàng)建了一個(gè)類的子類。
舉一個(gè)VB5或VB6的例子,你可以創(chuàng)建一個(gè)"Employee",它有一些向姓名,地址等的屬性。如果你想創(chuàng)建一個(gè)象 “Worker”,“ Officer”的新類或者別的什么,你不能簡(jiǎn)單的擴(kuò)展已有的Employee類。作為替代,你可以選擇復(fù)制代碼到新的對(duì)象,或者使用委派技術(shù),在VB.NET中我們擁有完全的繼承。你可以繼承Employee類,包括所有的正確代碼包括效驗(yàn)、讀取、存儲(chǔ)。你可以為每一個(gè)Employee添加單獨(dú)的特點(diǎn)。如果你需要改變標(biāo)準(zhǔn)的行為,你也可以覆蓋、重載或隱藏基類的方法和屬性。
覆蓋:
使用同樣的名字替換基類的方法或?qū)傩浴?/p>
重載:
添加新的不同參數(shù)的實(shí)現(xiàn)方法。
隱藏:
替換基類中同樣名字的屬性。
繼承也適用于象forms和controls之類的虛類。這可以使VB.NET創(chuàng)建一個(gè)基本的Form,包含corporate logos, standard menus, help systems等,然后繼承它們,創(chuàng)建一個(gè)特定的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", MessageBox
Buttons.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
防止繼承:
我們創(chuàng)建的類默認(rèn)的可以被作為基類使用。有時(shí)我想創(chuàng)建一個(gè)類,但是不能被繼承。
我們可以在類的聲明時(shí)添加“NotInheritable”關(guān)鍵字:
- Public NotInheritable
Class arungg …… End Class
當(dāng)使用這個(gè)類時(shí),沒有別的代碼可以使用Inherits關(guān)鍵字創(chuàng)建一個(gè)我們類的子類?!?/p>
結(jié)論:
在VB.NET中,VB語言終于完整的轉(zhuǎn)變?yōu)閺氐椎腛O語言。我們現(xiàn)在有完整的inheritance,以及其他的特性。VB.NET不止是提供給我們完整的VB.NET面向?qū)ο蟮奶匦?,也改變我們以往使用VB6的一些方法。