İşlev aşırı yükleme, aynı adla ancak farklı giriş parametreleri veya dönüş türleriyle birden fazla yöntemin oluşturulabildiği birçok programlama dilinin bir özelliğidir. Bu nesne yönelimli programlamada ortak bir özelliktir; özellikle yapıcılar birden fazla farklı aşırı yük varyantına sahip olabilir. Temel olarak, iki işlev çok benzer şeyler yaptığında ve bunu yapmak için birden fazla girdi türü alabildiğinde işlev aşırı yüklemesi yararlıdır. Yapıcılar, açıkça belirtilen geri dönüş tiplerine sahip olmadıkları için kolayca aşırı yüklenebilirler, bu nedenle yapıcının giriş parametrelerinin değiştirilmesi geçerli aşırı yükleme olacaktır.
Bir işlevin aşırı yüklenmesinin ilk yolu girdi parametrelerini değiştirmektir. Örneğin, bir giriş iki tam sayı olarak kabul edilen "add" adında bir fonksiyon olarak düşünülebilir. Bu işlevin amacı oldukça açıktır; iki tam sayının toplamını bulmak içindir.
Bununla birlikte, iki şamandıranın toplamını veya ondalık sayıları bulmak istiyorsa, bu işlev geçerli olmaz. Bu nedenle, ikinci bir aşırı yüklenme işlevi gerekli olacaktır; giriş iki yüzer olarak geçen "add" olarak adlandırılan bir işlev olarak tanımlanır. İşlevler temelde aynı şeyi yapar, ancak girişleri önemli ölçüde farklı olduğu için işlev aşırı yüklemesi gereklidir.
Bir fonksiyonun aşırı yüklenmesinin ikinci yolu, hem giriş parametrelerini hem de dönüş tipini değiştirmektir. Önceki örneği kullanarak, her ikisi de aşırı yüklenmiş "add" fonksiyonlarının boş bir geri dönüş tipi olup olmadığını düşünebiliriz; yani, hiçbir şey döndürmediler. Bu hala geçerli fonksiyon aşırı yüklemesi olabilir, ancak iki yöntemin dönüş tipleri de değiştirilebilir. Başka bir geçerli aşırı yükleme örneğinde, iki tam sayı alan "add" işlevi bu tam sayı toplamını ve iki ondalık sayı alan "add" işlevi bu ondalık sayı toplamını döndürür.
Bununla birlikte, bir fonksiyonun dönüş tipini basitçe değiştirmek, geçerli fonksiyon aşırı yüklemesi olarak kabul edilmez. Bir işlevin yalnızca dönüş türünü değiştirmek belirsizliğe yol açar, çünkü hangi dönüş türünün istendiği yöntem imzasından açıkça anlaşılmaz. Parametreler de belirsiz bir şekilde tanımlanabilir, bu nedenle aşırı yüklenmiş işlevlerin doğru şekilde çağrılması çok önemlidir. Örneğin, biri girdi parametresi olarak tam sayıya sahip aşırı yüklenmiş bir işlev ve diğeri parametresi olarak ondalık sayıya sahip olan bir başkası varsa, birisinin tüm sayı işlevi yerine yanlışlıkla ondalık sayı işlevini çağırması çok kolay olacaktır. , veya tam tersi, çünkü aynı ada sahipler. Mümkünse bunlar gibi belirsiz parametrelerden kaçınılmalı ve mümkün değilse, uygun aşırı yüklenme fonksiyonunun uygun zamanlarda çağrıldığından emin olmak için büyük özen gösterilmelidir.
İşlev aşırı yükleme, çeşitli giriş türleriyle ilgili işlevler oluşturmak için kullanışlıdır ve çok esneklik sağlar. Aşırı yüklenmiş fonksiyonlar hakkındaki son bir değerlendirme, yeterli yorumlamanın gerekli olduğudur. Farklı girdi parametreleriyle, belirli bir durum için aşırı yüklenmiş bir fonksiyonun hangi versiyonunun doğru olduğu açık olsa da, fonksiyonun diğer aşırı yüklenmiş ortaklarından farklı olarak ne yaptığı tam olarak net olmayabilir.


