您好,登錄后才能下訂單哦!
這篇文章給大家介紹VB.NET構造函數實際處理方式,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在開發領域,已經出現了許多種開發語言供編程人員隨自己的需求進行選擇應用。比如VB.NET語言就可以對有特定需求的開發人員進行一定的幫助。VB.NET構造函數進行處理的時侯,有兩個陳述值得注意:
VB.NET控件數組問題相關解決方案解析
閑談VB.NET cstr函數性能特點
VB.NET連接數據庫相關操作技巧介紹
深入剖析VB.NET驗證LDAP用戶身份
詳細解讀VB.NET實現Singleton模式操作步
(1) 如果類型不包含任何實例構造函數聲明,則VB.NET提供默認的構造函數;
默認參數調用直接基類的無參數構造函數。如果基類沒有可訪問的無參數構造函數,則發生編譯期錯誤。
(2) 構造函數不能繼承;
陳述(1)包含兩個方面的信息:
①是如果類型不包含任何實例構造函數聲明,則VB.NET提供默認的構造函數,即下面的聲明是允許的,在類Shape中我們沒有顯式聲明任何構造函數,但是我們仍然可以通過VB.NET自動提供的無參數構造函數New()來實例化類;
Module TestModule Test
Public Sub Main()Sub Main()
Dim shape1 As Shape = New Shape
End Sub
End Module
Public Class ShapeClass Shape
Public Sub Draw()Sub Draw()
'some codes here.
End Sub
End Class
②是如果類型中包含有實例構造函數的聲明,那么VB.NET不再提供默認的構造函數,例如,我們在類Shape中添加了一個帶參數的構造函數,
Public Class ShapeClass Shape Private _pt As Point Public Sub New()Sub New(p As Point) _pt = p End Sub Public Sub Draw()Sub Draw() 'some codes here. End Sub End Class
那么,如果直接實例化類時,則會產生錯誤;
Dim shape1 As Shape = New Shape
只能通過調用Shape類中顯式聲明的帶參數的構造函數來實例化類,如下,
Dim shape1 As Shape = New Shape(New Point(0, 0))
因此,如果要在類中同時使用無參數和帶參數的構造函數,必須同時顯式地聲明兩種構造函數。
Public Class ShapeClass Shape Private _pt As Point Public Sub New()Sub New() 'some codes here. End Sub Public Sub New()Sub New(p As Point) _pt = p End Sub Public Sub Draw()Sub Draw() 'some codes here. End Sub End Class
陳述(2),構造函數不能繼承,即,如果要使子類與基類有相同的構造函數,那么必須在每個子類中都顯式的聲明與基類構造相同的構造函數,例如:
Public MustInherit Class
ShapeClass ShapePrivate _pt As Point
Public Sub New()Sub New()
'some codes here.
End Sub
Public Sub New()Sub New(p As Point)
_pt = p
End Sub
Public MustOverride Sub Draw()Sub Draw()
End Class
Public Class LineClass Line
Inherits Shape
Public Sub New()Sub New()
End Sub
Public Sub New()Sub New(p As Point)
MyBase.New(p)
End Sub
Public Overrides Sub Draw()Sub Draw()
'some codes here.
End Sub
End Class
這一點非常重要而且也很有意義。因為我們往往傾向于認為子類繼承了基類所有的屬性和方法,這往往導致我們的程序出現編譯錯誤。
綜合以上兩個陳述,在實際編程中應遵循一個原則:在類中,無論是基類還是子類,顯式地聲明所有需要的無參數或帶參數構造函數。遵循這個原則,既有利于提高編譯正確代碼的速度,也有利于自己和其他程序員理解代碼。
關于VB.NET構造函數實際處理方式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。