Yöntem aşırı yükleme
Bugünkü yeni ve ilginç konumuz yöntem aşırı yüklemesi . Dikkatli olun — yöntem aşırı yüklemesi, yöntemi geçersiz kılma ile karıştırılmamalıdır.
Geçersiz kılmanın aksine, aşırı yükleme çok basit bir işlemdir. Aslında yöntemler üzerinde bir işlem değildir, ancak bazen korkunç parametrik polimorfizm terimiyle anılır .
Buradaki sorun, bir sınıf içindeki tüm yöntemlerin benzersiz adlara sahip olması gerektiğidir. Bu tamamen doğru değil. Daha doğrusu, bu hiç de doğru değil. Yöntem adının benzersiz olması gerekmez. Benzersiz olması gereken , yöntem adı ile yöntemin parametre türlerinin birleşimidir. Bu birleşim, yöntem imzası olarak bilinir.
Örnekler:
kod | Tanım |
---|---|
|
Buna izin verilir. İki yöntemin benzersiz adları vardır. |
|
Ve ayrıca bu. İki yöntemin benzersiz adları (imzaları) vardır. |
|
Yöntemler hala benzersizdir |
|
Ama buna izin verilmiyor . Yöntemler benzersiz değildir . Farklı türler döndürmelerine rağmen. |
|
Ama bunu yapabilirsin . Yöntem parametreleri benzersizdir |
İmza, yöntem adını ve parametre türlerini içerir . Yöntemin dönüş türünü ve parametre adlarını içermez . Bir sınıfın aynı imzalara sahip iki yöntemi olamaz - derleyici hangisini arayacağını bilemez.
Derleme sırasında kaybolduğu için parametre adları önemli değildir . Bir metot derlendikten sonra sadece ismi ve parametre tipleri bilinir. Dönüş türü kaybolmaz, ancak yöntemin sonucunun herhangi bir şeye atanması gerekmez, bu nedenle imzaya da dahil edilmez.
OOP ilkelerine göre , polimorfizm, farklı uygulamaları tek bir arayüzün arkasına saklıyor. Örneğin, yöntemi çağırdığımızda System.out.println()
, hangi argümanların iletildiğine bağlı olarak farklı yöntemler çağrılır. Bu eylemdeki polimorfizmdir.
Bu nedenle, aynı sınıfta yer alan aynı adlara sahip farklı yöntemler, zayıf bir polimorfizm biçimi olarak kabul edilir.
GO TO FULL VERSION