【VB.NET】VB.NET面向对象技术问题的解答
重載和重寫有什么區(qū)別?
答:重載與重寫最重要的區(qū)別在于重載要求方法簽名不同,而重寫的方法簽名是相同的。另外,重載在派生類中要使用Overloads關(guān)鍵字;重寫在基類中要使用Mustoverride或Overridable關(guān)鍵字,在派生類中要使用Overrides關(guān)鍵字。
類應(yīng)該在什么位置創(chuàng)建?
答:根據(jù)實(shí)際的需要類可以放在任何位置,可以是窗體的類框架內(nèi),單獨(dú)的模塊文件內(nèi),也可以放在單獨(dú)的文件中,如果需要?jiǎng)?chuàng)建類庫也可以放在單獨(dú)的項(xiàng)目中。
怎樣建立事件源與事件處理過程的關(guān)聯(lián)?
答:可以通過兩種方式建立這種關(guān)聯(lián)。一種是使用WithEvents關(guān)鍵字聲明對象,然后再使用Handles子句將事件處理過程與事件源相關(guān)聯(lián),這種關(guān)聯(lián)是在設(shè)計(jì)時(shí)確定的;另外一種關(guān)聯(lián)是使用AddHandler和AddressOf子句,要處理的對象事件放在AddHandler后面,對應(yīng)的事件處理過程放在AddressOf后面,這種關(guān)聯(lián)可在程序運(yùn)行時(shí),動態(tài)建立關(guān)聯(lián),較為靈活。
與事件源相關(guān)聯(lián)的事件處理過程的名稱是否必須要與對象的事件名稱保持一致?
答:這不是必須的。實(shí)際上只要使用了WithEvents,Handles子句;或者AddHandler,AddressOf子句就可以將任何名稱的過程與事件源相關(guān)聯(lián),也就是說事件處理過程本身的名稱并不重要。但是,為了增強(qiáng)可讀性,一般在代碼編輯器中,如果通過選擇對象和事件的方式建立事件源于事件處理過程的關(guān)聯(lián)時(shí),就會自動保持名稱的一致,把對象名稱和事件名稱中間通過下劃線連接來作為事件處理過程的名稱。
Visual Basic.NET中可以實(shí)現(xiàn)多繼承嗎?
答:不可以。Visual Basic.NET不支持多繼承,任何一個(gè)類最多只能有一個(gè)父類。但是,可以通過接口來實(shí)現(xiàn)類似的功能。
只要進(jìn)行重載就需要添加Overloads關(guān)鍵字嗎?
答:不是的。如果在某個(gè)類中有關(guān)于一個(gè)同名方法的重載時(shí)可以省略O(shè)verloads關(guān)鍵字,但是如果在其中一個(gè)重載方法中添加了Overloads關(guān)鍵字,那么其他的重載方法也必須添加Overloads關(guān)鍵字。但是,如果在派生類中重載了基類中的方法時(shí),必須添加Overloads關(guān)鍵字。
如何在派生類中調(diào)用基類中的方法?
答:要想在派生類中調(diào)用基類中的方法,就需要使用MyBase關(guān)鍵字。通過“MyBase.”加對應(yīng)的方法名稱及所需參數(shù)即可。
如果函數(shù)過程只是返回值類型不同,能夠進(jìn)行重載嗎?
答:不能。方法能否被重載只取決于參數(shù)的類型、數(shù)量和順序上是否存在差異。如果存在不同,就可以進(jìn)行重載;否則,不可以進(jìn)行重載。它與是否方法具有返回值毫無關(guān)系,所以僅僅依靠返回值類型的不同來進(jìn)行重載是不能實(shí)現(xiàn)的。
哪種實(shí)現(xiàn)多態(tài)的方式相對而言不是很理想,最好少用?
答:相對而言,后期綁定的方式實(shí)現(xiàn)多態(tài)的性能會差一些,因?yàn)樗枰趫?zhí)行過程中將Object類型的對象轉(zhuǎn)換為特定的類型對象,會多消耗時(shí)間;另外如果在執(zhí)行過程中指定的對象并不是有效的對象時(shí),就會發(fā)生異常。因此,如果有其他的替代方法,最好不要采用后期綁定的方式實(shí)現(xiàn)多態(tài)。
為了共享某個(gè)類的某些方法、屬性或事件,就可以使用繼承嗎?
答:不一定。是否使用繼承與兩個(gè)類的關(guān)系有關(guān)。如果其中一個(gè)類是另一個(gè)類的進(jìn)一步的特殊化或者說一個(gè)類可以作為另一個(gè)類的子類,在原有類的繼承上又有了自己的一些不同之處時(shí),可以使用繼承來共享某些方法、屬性或事件。如果不滿足這個(gè)關(guān)系,又想進(jìn)行共享的話,最好采用接口來實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的【VB.NET】VB.NET面向对象技术问题的解答的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解读Mybatis数据库开发框架
- 下一篇: 【数据结构与算法】图的邻接矩阵表示及其B