"Merhaba Amigo! Sana yöntemin aşırı yüklenmesinden bahsedeceğim ."

"Onları da aşırı yükleyebilir misin?! Ne gün!"

"Onlarla çok şey yapabilirsiniz, ama şu anda buna girmeyeceğiz."

"Bu bir anlaşma."

"Aşırı yükleme çok basit bir işlemdir. Bazen korkutucu bir adla anılsa da aslında yöntemler üzerinde bir işlem bile değildir: parametrik polimorfizm ."

Hatırlamanız gereken şey, bir sınıftaki her yöntemin benzersiz bir adı olması gerektiğidir.

"Evet biliyorum."

"Eh, bu tamamen doğru değil. Yani, hiç doğru değil. Bir yöntemin benzersiz bir adı olması gerekmez. Benzersiz olması gereken, bir yöntem adı ile parametre türlerinin birleşimidir. Bu kombinasyon aynı zamanda yöntem imzası olarak bilinir."

kod Yorumlar
public void print();
public void print2();
Buna izin verilir. İki yöntemin benzersiz adları vardır.
public void print();
public void print(int n);
Ve buna da izin verilir. İki yöntemin benzersiz adları (imzaları) vardır.
public void print(int n, int n2);
public void print(int n);
Yöntem adları burada hala benzersizdir.
public int print(int a);
public void print(int n);
Ancak buna izin verilmiyor. Farklı türler geçilse de yöntemler benzersiz değildir.
public int print(int a, long b);
public long print(long b, int a);
Ancak buna izin verilir. Yöntem parametreleri benzersizdir.

"Bunu zaten bir yerlerde görmüştüm."

"Evet. " System.out.println " yazdığınızda IntelliJ IDEA, farklı parametreler kullanan yazdırma yöntemlerinin birkaç düzine sürümünü önerir . Derleyici, ilettiğiniz parametrelerin türlerine göre gerekli yöntemi tanımlar ve ardından çağırır."

"Bu o kadar da zor değil. Ama polimorfizm değil."

"Ya da daha doğrusu, yöntem geçersiz kılma değil."

Bu arada parametre isimlerinin alakasız olduğunu belirtmek isterim . Derleme sırasında kaybolurlar. Bir yöntem bir kez yerine getirildiğinde, yalnızca adı ve parametre türleri bilinir.