Visual Basic'te yöntem aşırı yüklemesi (overloading), aynı ada ancak farklı parametrelere (tipler, sayılar, sıralamalar) sahip birden fazla yöntem oluşturmayı sağlar. Aşırı yükleme, yöntem bildiriminden önce Overloads anahtar kelimesinin kullanılmasıyla gerçekleştirilir. Bu, sınıfın arayüzünü daha esnek ve kullanışlı hale getirir ve aynı yöntemin farklı parametre setleriyle kullanılmasını sağlar. Aşırı yazma (overriding) ise, miras alma ile ilgili olup türetilmiş sınıfta temel sınıfın yönteminin gerçekleştirilmesini değiştirmeye izin verir; bunun için Overrides (türetilmiş sınıfta) ve Overridable (temel sınıfta) anahtar kelimeleri kullanılır.
Yöntem aşırı yüklemesine örnek:
Class MathUtil ' İki tam sayının toplamı için aşırı yükleme Public Overloads Function Add(a As Integer, b As Integer) As Integer Return a + b End Function ' Üç tam sayının toplamı için aşırı yükleme Public Overloads Function Add(a As Integer, b As Integer, c As Integer) As Integer Return a + b + c End Function ' İki ondalık sayının toplamı için aşırı yükleme Public Overloads Function Add(a As Double, b As Double) As Double Return a + b End Function End Class
Soru: "Dönüş değerinin adı ile prosedür ve işlevler aşırı yüklenebilir mi? Neden?"
Cevap: Hayır, Visual Basic'te yöntemlerin aşırı yüklenmesi yalnızca parametre seti (tip, sayı, sıralama) ile mümkündür. Dönüş değerinin tipi ile aşırı yükleme yapılamaz: eğer yöntemlerin imzaları yalnızca sonuç tipinde farklılık gösteriyorsa, bir derleme hatası meydana gelir.
Örnek:
' Bu, derleme hatasına yol açacaktır! Overloads Function Foo(x As Integer) As Integer End Function Overloads Function Foo(x As Integer) As String End Function
Hikaye
İnternet bankacılığı projesinde, geliştirici kullanıcı doğrulama yöntemlerini aşırı yükleme ile uyguladı, ancak yalnızca dönüş değerinin tipi ile farklılık yarattı (örneğin, biri Boolean, diğeri hata mesajı için String döndürüyordu). Bu, yöntemin çağrısında belirsizliğe, derleme hatasına yol açtı ve ekibin arayüzü acil olarak düzeltmesi gerekti, bu da sürümün gecikmesine neden oldu.
Hikaye
Kurumsal bir depo yönetimi sisteminde, AddItem adlı aşırı yüklenmiş bir yöntem yapmaya çalıştılar, bunları dönüş sonucunun tipiyle ayırarak (örneğin, biri ekleme sonucu, diğeri eklenen kaydın ID'si). Harici bir API ile entegrasyondan sonra testler derlenmeyi durdurdu, çünkü dil bu tür bir aşırı yüklemeyi desteklemiyor ve etkileşim mimarisini tamamen yeniden gözden geçirmek zorunda kaldılar.
Hikaye
Eski bir bilimsel veri işleme projesinde, bir işlevi dönüş tipiyle aşırı yüklemeye çalıştılar (bir Double, diğeri Decimal). Çağrı örnekleri derleyici için ayırt edilemez hale geldi, bu da beklenmeyen çalışma zamanı hatalarına ve kütüphane arayüzünü düzeltmek için çift çalışma gereksinimine yol açtı.