溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VB.NET構(gòu)造函數(shù)實(shí)際處理方式

發(fā)布時(shí)間:2021-11-22 18:41:03 來源:億速云 閱讀:211 作者:柒染 欄目:編程語言

這篇文章給大家介紹VB.NET構(gòu)造函數(shù)實(shí)際處理方式,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在開發(fā)領(lǐng)域,已經(jīng)出現(xiàn)了許多種開發(fā)語言供編程人員隨自己的需求進(jìn)行選擇應(yīng)用。比如VB.NET語言就可以對有特定需求的開發(fā)人員進(jìn)行一定的幫助。VB.NET構(gòu)造函數(shù)進(jìn)行處理的時(shí)侯,有兩個(gè)陳述值得注意:

  • VB.NET控件數(shù)組問題相關(guān)解決方案解析

  • 閑談VB.NET cstr函數(shù)性能特點(diǎn)

  • VB.NET連接數(shù)據(jù)庫相關(guān)操作技巧介紹

  • 深入剖析VB.NET驗(yàn)證LDAP用戶身份

  • 詳細(xì)解讀VB.NET實(shí)現(xiàn)Singleton模式操作步

(1) 如果類型不包含任何實(shí)例構(gòu)造函數(shù)聲明,則VB.NET提供默認(rèn)的構(gòu)造函數(shù);

默認(rèn)參數(shù)調(diào)用直接基類的無參數(shù)構(gòu)造函數(shù)。如果基類沒有可訪問的無參數(shù)構(gòu)造函數(shù),則發(fā)生編譯期錯(cuò)誤。

(2) 構(gòu)造函數(shù)不能繼承;

陳述(1)包含兩個(gè)方面的信息:

①是如果類型不包含任何實(shí)例構(gòu)造函數(shù)聲明,則VB.NET提供默認(rèn)的構(gòu)造函數(shù),即下面的聲明是允許的,在類Shape中我們沒有顯式聲明任何構(gòu)造函數(shù),但是我們?nèi)匀豢梢酝ㄟ^VB.NET自動(dòng)提供的無參數(shù)構(gòu)造函數(shù)New()來實(shí)例化類;

  1. Module TestModule Test   

  2. Public Sub Main()Sub Main()   

  3. Dim shape1 As Shape = New Shape   

  4. End Sub   

  5. End Module   

  6. Public Class ShapeClass Shape   

  7. Public Sub Draw()Sub Draw()   

  8. 'some codes here.   

  9. End Sub   

  10. End Class  

②是如果類型中包含有實(shí)例構(gòu)造函數(shù)的聲明,那么VB.NET不再提供默認(rèn)的構(gòu)造函數(shù),例如,我們在類Shape中添加了一個(gè)帶參數(shù)的構(gòu)造函數(shù),

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

那么,如果直接實(shí)例化類時(shí),則會(huì)產(chǎn)生錯(cuò)誤;

Dim shape1 As Shape = New Shape

只能通過調(diào)用Shape類中顯式聲明的帶參數(shù)的構(gòu)造函數(shù)來實(shí)例化類,如下,

Dim shape1 As Shape = New Shape(New Point(0, 0))

因此,如果要在類中同時(shí)使用無參數(shù)和帶參數(shù)的構(gòu)造函數(shù),必須同時(shí)顯式地聲明兩種構(gòu)造函數(shù)。

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),構(gòu)造函數(shù)不能繼承,即,如果要使子類與基類有相同的構(gòu)造函數(shù),那么必須在每個(gè)子類中都顯式的聲明與基類構(gòu)造相同的構(gòu)造函數(shù),例如:

  1. Public MustInherit Class 
    ShapeClass Shape   

  2. Private _pt As Point   

  3. Public Sub New()Sub New()   

  4. 'some codes here.   

  5. End Sub   

  6. Public Sub New()Sub New(p As Point)   

  7. _pt = p   

  8. End Sub   

  9. Public MustOverride Sub Draw()Sub Draw()   

  10. End Class   

  11. Public Class LineClass Line   

  12. Inherits Shape   

  13. Public Sub New()Sub New()   

  14. End Sub   

  15. Public Sub New()Sub New(p As Point)   

  16. MyBase.New(p)   

  17. End Sub   

  18. Public Overrides Sub Draw()Sub Draw()   

  19. 'some codes here.   

  20. End Sub   

  21. End Class  

這一點(diǎn)非常重要而且也很有意義。因?yàn)槲覀兺鶅A向于認(rèn)為子類繼承了基類所有的屬性和方法,這往往導(dǎo)致我們的程序出現(xiàn)編譯錯(cuò)誤。

綜合以上兩個(gè)陳述,在實(shí)際編程中應(yīng)遵循一個(gè)原則:在類中,無論是基類還是子類,顯式地聲明所有需要的無參數(shù)或帶參數(shù)構(gòu)造函數(shù)。遵循這個(gè)原則,既有利于提高編譯正確代碼的速度,也有利于自己和其他程序員理解代碼。

關(guān)于VB.NET構(gòu)造函數(shù)實(shí)際處理方式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI