vb.net的類和對象根底。本站提示廣大學習愛好者:(vb.net的類和對象根底)文章只能為提供參考,不一定能成為您想要的結果。以下是vb.net的類和對象根底正文
OOp(Object-Oriented-Programming)是絕對於構造化順序設計(Structure Programming)而言的,表示采用面向對象的思想停止軟件的編制。它是當今最盛行的編程形式。“面向對象技術”追求的是軟件零碎對理想世界的直接模仿,盡量完成將理想世界中的事物直接映射到軟件零碎的解空間。
對象是一些把屬性(Properties)、字段(fileds)、辦法(methods)、事情(event)作為一個獨自的數據類型停止處置的實體。編程還需求對象滿足和支持上面三個特性:封裝性、承繼性和多態性。對象可以運用戶只需首先聲明一些變量和辦法當前,就可以在需求運用的時分,調用一個它的對象停止重用。
在Visual Basic的晚期版本中(1.0-3.0)並沒有包括面向對象的功用,從vb 4.0開端,用戶可以象樹立一個新的窗體那樣樹立一個新的類,並把它作為一個新的對象,類在Vb.net中是一個十分重要的局部,簡直一切正軌的順序都包括了一個或許幾個類,在vb.net中,類模塊和窗體的區別曾經不存在了,簡直一切的順序都是由類組成的,為了更好的運用這些類,它們被依照不同的功用分中不同的功用類庫裡。
vb.net在聲明、結構以及執行類上比vb 6.0有很大的變化,異樣在對象的處置上也有不小的改動。這些改動影響了定義一個對象、援用和取消援用對象以及運用捆綁技術的辦法。
vb.net沒有運用CreateObject語句來創立對象。CreateObject是Visual Basic與COM親密相關的一個產物。由於vb.net不再運用COM,所以從Vb.net開端就不再運用CreateObject。vb.net運用New語句來創立對象。用戶可以在代碼的任何中央運用New。上面就是一個創立一個變量並且在類的一個實例中創立一個對象的實例:
Dim obj As TheClass
obj=New TheClass()
可以簡化下面的語句:
Dim obj As New TheClass()
在Visual Basic 6.0中,以上的兩段語句會存在一些問題,但是在vb.net中上瑞的兩段語句之間沒有區別,只是第二段語句延長了而已。假如用戶在一個模塊中聲明一個變量,那個變量就只要在該模塊中才無效。在許多狀況下,用戶想在辦法的作用域中聲明一個變量,或許想在模塊(比方Try...End或許loop循環構造)中創立一個類的實例。在這樣的狀況下,用實例化來組合聲明有些不妥。
下面的語句為用戶定義了一個變量並實例化了一個類。這條語句能夠在處置承繼或許多個界面的時分會更有用。用戶可以聲明變量為其中一品種型並且基於要執行界面的類來實例化對象:
Dim obj As MyInterface=New Theclass()
也可以同時應用復雜的語句。假設如今有個需求對象援用的辦法,就可以這樣來實例化對象:
DoSomething(New TheClass())
以上的語句是調用DoSomething辦法並且傳遞Theclass的一個新的實例作為參數。這個新的對象就只要存在於這個辦法的調用事情內,即當辦法完成之後,這個對象就自動被取消援用。
這裡還得留意一下,取消援用一個對象不是意味著馬上終止這個對象。這一點後面的引見中有過解釋。對象只要在.NEt的渣滓搜集處置順序的時分才將它們從內存肅清掉。
上面的例子能夠更復雜。不是應用一個對象援用,這裡的辦法需求一個字符串。用戶可以從一個辦法提供一個字符串數值到對象中來實例化對象並調用辦法:
DoSomething(New TheClass().GetStringData())
很顯然,用戶能夠需求細心察看一下這條語句的可讀性。語句的緊縮往往降低了可讀性,這一點是應該留意到的。
當處置對象的時分,這裡沒有運用Set語句。在vb 6.0中,處置對象援用的時分,用戶不得不運用Set命令處置來自其他數據類型的對象。而在vb.net中來自其他數據類型的對象是采用不同的辦法來處置的,這裡可以運用直接的參數來處置對象,就象處置整型或許字符型數據類型。這個Set命令在Vb.net中不再無效。
在vb 6.0中,用戶可以經過設置對象援用為Nothing(空)來取消援用對象。這點和vb.net中的處置辦法是一樣的。
Dim obj As TheClass
obj=New TheClass()
obj=Nothing
但是在vb.net中這條語句有不同的效果。由於vb.net不是運用援用計算來終止對象,而是依托渣滓搜集機理。而在vb 6.0中,當沒有變量訪問對象的援用,這個對象就被終止。在vb.net中,以下這樣看法是錯誤的:當渣滓搜集處置順序發現對象沒有被援用它就被終止。正確的應該是,是最後一個援用被移除之後的一段時間後才將對象從內存中肅清。但是這並沒有肅清被取消對象的數值。假如用戶有一個長時間運轉的算法,那麼最好在處置順序中顯示式地取消援用這個對象,這樣就可以在能夠的狀況下由渣滓搜集順序肅清它們。只需代碼保存了對象的援用,那麼對象就會堅持在內存中而不會被渣滓搜集順序肅清。
vb.net可以創立處置代碼,這些處置代碼是運轉在.NET框架上的。一切的管理代碼可以和其他類型的處置代碼交互作用,而不論用戶是用什麼編程言語來創立這些組件的。這就意味著用戶可以在一種編程言語上創立一個類,然後使用到另外的編程言語中,當然也包括承繼。這正是穿插言語混承繼的混合編程機理。實踐上,如今有許多順序設計人員曾經在使用這個技術了。許多的.NEt零碎類庫是在C#上編寫的,而用戶在vb.net上編寫順序的時分,可以承繼這些類作為基類。
舉個例子,在vb.net創立一個類庫工程取名為vblib,並且添加一個復雜的類為Parent,代碼如下:
Public Class Parent
Public Sub DoSomething()
MsgBox(Parent Dosomething,MsgBoxStyle.Information.Parent)
End Sub
End Class
能夠許多順序設計人員還不知道vb.net支持Windows窗體的可視化承繼。可視化承繼,就是說用戶可以創立一個Windows窗體,然後可以承繼這個窗體使得其他窗體具有與該窗體相反的版面布置、控件和行為。用戶也可以運用承繼來創立自己的Windows控件。比方,用戶可以創立一特性能進步了的TextBox(文本框)來完成數據輸出的特殊的無效性校驗。詳細的做法是:經過承繼創立一個由原始文本框控件類承繼而來的子類,並停止適當的修正以進步文本框的功能,使之可以完成對數據輸出的無效性校驗。這一點跟Web表單控件是相反的,Web表單控件可以由一個曾經存在的Web表單控件來創立一個子類。用戶的子類可以重載已有的函數或許添加一些新的函數。
Vb.net不只提供了承繼,而且還提供了其他許多重要的新特性。vb.net改良了創立和處置多界面的辦法,使得用戶可以更容易的運用它們。另外,vb.net支持事情作為界面的一局部,使得如今可以在界面上表達一切的元素:辦法、屬性、事情。此外,在vb.net中終止對象不是經過援用計數來完成,而是應用“渣滓搜集”順序來將對象從內存中肅清。總而言之,vb.net比起Visual Basic以前的版本變說,其面向對象的才能大大添加了,而且vb.net也保存了低版本的絕大少數的特性。
關於面向對象的詳細實際請參閱後續章節:vb.net的OOP構造。