我們都知道,面向?qū)ο笳Z(yǔ)言的三大特征是:封裝、繼承和多態(tài)。而重寫和重載是多態(tài)的兩種表現(xiàn)形式。多態(tài),顧名思義,就是指多種形態(tài)。而重寫和重載正好體現(xiàn)了這一點(diǎn)?,F(xiàn)在我們以 VB.NET 語(yǔ)言來說明兩者的區(qū)別。
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有江油免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
重寫是發(fā)生在父類與子類之間的關(guān)系。具體來講就是子類可以重寫父類的現(xiàn)有的方法。它要求子類的方法名稱及參數(shù)必須與父類完全一致。比如吃飯,父親可以吃兩碗面,孩子同樣也是吃面,卻只能吃一碗。
重載則主要是發(fā)生在同一個(gè)類當(dāng)中的,它通過多個(gè)名稱相同的方法,但方法參數(shù)不相同,或者方法返回類型不相同來加以區(qū)別。其中,方法參數(shù)不相同包括以下幾種情況:參數(shù)的個(gè)數(shù)不相同,參數(shù)的類型不相同,參數(shù)的對(duì)應(yīng)位置不相同。需要說明的是,重載同樣可以應(yīng)用到父類與子類當(dāng)中。即子類重載了父類的方法。
重寫:
在 VB.NET 中,重寫汲及到的關(guān)鍵字有:
OverRidable: 在父類中聲明的可以在子類中重寫的方法。
OverRides: 在子類中聲明的要重寫父親中可重寫的方法。
MustOverRide: 在父類中,表示這個(gè)方法必須在子類中重寫。此時(shí),該類必須聲明為抽象類。
NotOverridable: 如果當(dāng)前類還有子類,那么,在其子類中,該方法不允許被重寫。
重載:
在 VB.NET 中,重載用到的關(guān)鍵是 OverLoads。
這里需要說明幾點(diǎn):
1. 對(duì)于在同一類當(dāng)中,一組名稱相同的方法或函數(shù)重載時(shí),可以加關(guān)鍵字 OverLoads 或者不加。但如果其中有一個(gè)方法加上,那同組其它方法也必須加該關(guān)鍵字。
2. 如果該方法是重載父類中的方法。那么必須加 OverLoads 關(guān)鍵字。
3. 如果兩個(gè)同名函數(shù)僅返回類型不相同,則它們不能重載,即必須在參數(shù)上有所不同。
同一個(gè)類中多次聲明相同名字的方法,每次聲明時(shí)都是不同的參數(shù)列表。方法重載主要是為了實(shí)現(xiàn)同一個(gè)功能,而使用統(tǒng)一的方法處理不同的數(shù)據(jù)類型。它是多樣性在同一類中的一種表現(xiàn)。而且方法重載時(shí),可以使用不同的作用域關(guān)鍵字比如使用public、或者使用friend。
方法重載必須滿足以下三點(diǎn):
1、方法重載時(shí)需要加入關(guān)鍵字OVERLOADS
2、方法的名稱必須相同。
3、方法的參數(shù)必須不同,這里的不同分三種情況:
a、參數(shù)個(gè)數(shù)不同,類型無限制;
b、參數(shù)個(gè)數(shù)相同,但是參數(shù)類型不同;
c、參數(shù)個(gè)數(shù)和類型都相同,但是參數(shù)的順序不同
Public Class Form1
Dim 設(shè)置時(shí)間 As DateTime
Private Sub D1_CloseUp(ByVal sender As Object, ByVal e As System.EventArgs) Handles 日期時(shí)間選擇.CloseUp
和.Text = 日期時(shí)間選擇.Value
設(shè)置時(shí)間 = 日期時(shí)間選擇.Value
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
日期時(shí)間選擇.Value = Now
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Now.ToString = 和.Text Then
提醒顯示.Text = "時(shí)間到了 你該去做些什么事了吧"
'Timer1.Enabled = False
Else
提醒顯示.Text = "現(xiàn)在時(shí)間是:" Now
End If
End Sub
Private Sub 和_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 和.TextChanged
設(shè)置時(shí)間 = 和.Text
End Sub
End Class