Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşırı yükleme, bir sınıfta aynı ada ancak farklı bağımsız değişken türlerine sahip birden fazla yordam, örnek oluşturucu veya özellik tanımlanmasıdır.
Kullanımın aşırı yüklenmesi
Aşırı yükleme özellikle nesne modeliniz farklı veri türlerinde çalışan yordamlar için aynı adları kullanmanıza neden olduğunda kullanışlıdır. Örneğin, birkaç farklı veri türünü görüntüleyebilen bir sınıfın aşağıdakine benzer yordamları olabilir Display :
Overloads Sub Display(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Overloads Sub Display(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
Aşırı yükleme yapmadan, her yordam için, aynı şeyi yapsalar bile, aşağıda gösterildiği gibi ayrı adlar oluşturmanız gerekir:
Sub DisplayChar(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Sub DisplayInt(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Sub DisplayDouble(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
Aşırı yükleme, kullanılabilecek bir veri türü seçimi sağladığından özelliklerin veya yöntemlerin kullanımını kolaylaştırır. Örneğin, daha önce ele alınan aşırı yüklenmiş Display yöntem aşağıdaki kod satırlarından herhangi biriyle çağrılabilir:
' Call Display with a literal of type Char.
Display("9"c)
' Call Display with a literal of type Integer.
Display(9)
' Call Display with a literal of type Double.
Display(9.9R)
Çalışma zamanında Visual Basic, belirttiğiniz parametrelerin veri türlerine göre doğru yordamı çağırır.
Hedefin aşırı yüklenmesi kuralları
Aynı ada sahip iki veya daha fazla özellik veya yöntem ekleyerek bir sınıf için aşırı yüklenmiş bir üye oluşturursunuz. Aşırı yüklenmiş türetilmiş üyeler dışında, aşırı yüklenmiş her üyenin farklı parametre listeleri olmalıdır ve bir özellik veya yordamı aşırı yüklerken aşağıdaki öğeler ayırt edici özellik olarak kullanılamaz:
Bir üyeye veya üyenin parametrelerine uygulanan değiştiriciler, örneğin
ByValveyaByRef, şeklindedir.Parametrelerin adları
Prosedürlerin dönüş türleri
Overloads Aşırı yükleme sırasında anahtar sözcük isteğe bağlıdır, ancak aşırı yüklenmiş herhangi bir üye anahtar sözcüğünü kullanıyorsaOverloads, aynı ada sahip diğer tüm aşırı yüklenmiş üyeler de bu anahtar sözcüğü belirtmelidir.
Türetilmiş sınıflar, devralınan üyelerin üzerine aynı parametrelere ve parametre türlerine sahip üyeler ekleyerek aşırı yükleme yapabilir, bu süreç ad ve imzaya göre gölgeleme olarak bilinir.
Overloads Ad ve imzaya göre gölgelenirken anahtar sözcük kullanılırsa, türetilmiş sınıfın temel sınıftaki uygulaması yerine üyenin uygulaması kullanılır ve bu üye için diğer tüm aşırı yüklemeler türetilmiş sınıfın örnekleri için kullanılabilir.
Devralınan bir üye, aynı parametrelere ve parametre türlerine sahip bir üyeyle aşırı yüklenirken anahtar kelime atlanırsa, bu aşırı yükleme işlemine "isimle gölgeleme" adı verilir. İsimle gölgeleme, bir üyenin devralınan uygulamasının yerini alır ve türetilmiş sınıfın ve onun alt sınıflarının örnekleri için diğer tüm aşırı yüklenmiş metotları kullanılamaz hale getirir.
Overloads ve Shadows değiştiricileri aynı özellik veya yöntemle kullanılamaz.
Örnek
Aşağıdaki örnek, ya dolar tutarının bir String ya da Decimal gösterimini kabul eden ve satış vergisini içeren bir dize döndüren aşırı yüklenmiş yöntemler oluşturmayı gösterir.
Bu örneği kullanarak aşırı yüklenmiş bir yöntem oluşturmak için
Yeni bir proje açın ve adlı
TaxClassbir sınıf ekleyin.aşağıdaki kodu
TaxClasssınıfına ekleyin.Public Class TaxClass Overloads Function TaxAmount(ByVal decPrice As Decimal, ByVal TaxRate As Single) As String TaxAmount = "Price is a Decimal. Tax is $" & (CStr(decPrice * TaxRate)) End Function Overloads Function TaxAmount(ByVal strPrice As String, ByVal TaxRate As Single) As String TaxAmount = "Price is a String. Tax is $" & CStr((CDec(strPrice) * TaxRate)) End Function End ClassFormunuza aşağıdaki yordamı ekleyin.
Sub ShowTax() ' 8% tax rate. Const TaxRate As Single = 0.08 ' $64.00 Purchase as a String. Dim strPrice As String = "64.00" ' $64.00 Purchase as a Decimal. Dim decPrice As Decimal = 64 Dim aclass As New TaxClass 'Call the same method with two different kinds of data. MsgBox(aclass.TaxAmount(strPrice, TaxRate)) MsgBox(aclass.TaxAmount(decPrice, TaxRate)) End SubFormunuza bir düğme ekleyin ve düğmenin
ShowTaxolayındanButton1_Clickyordamını çağırın.Projeyi çalıştırın ve aşırı yüklenen
ShowTaxyordamını test etmek için form üzerindeki düğmeye tıklayın.
Çalışma zamanında, derleyici kullanılan parametrelerle eşleşen uygun aşırı yüklenmiş işlevi seçer. Düğmeye tıkladığınızda, aşırı yüklenmiş yöntem, bir dize olan Price parametresiyle ve mesaj "Price bir Dizgedir." şeklinde ilk olarak çağrılır. Vergi 5,12 ABD dolarıdır" ifadesi görüntülenir.
TaxAmount ikinci kez bir Decimal değerle çağrılır ve "Fiyat ondalıktır. Vergi 5,12 ABD dolarıdır" ifadesi görüntülenir.