Java Eğitimi 15- Method Overloading

Merhabalar,

Bir önceki yazımda fonksiyonları ve çalışma prensiplerini sizlerle paylaşmıştım. Bu yazıda da metotlarda aşırı yükleme konusuna değineceğim.

Java’da bir fonksiyonu istediğimiz yerde çağırabiliyorduk. Peki aynı fonksiyonu birden fazla method şeklinde tanımlayabilir miyiz? Evet, Java böyle bir duruma olanak verir. Bu sebeple bir fonksiyonun birden fazla parametre ile değişik şekillerde çalışması ve aşırı yüklenmesi “method overloading” olarak tanımlanır. Böylece aynı metod birçok kez yazılabilir. Ama aşırı yükleme yapılabilmesi için birkaç koşul göz önünde bulundurulmalı. Mesela onlardan birisi aynı isimdeki metodlara farklı parametreler göndermektir. Bir örnek yaparak somut bir şekilde görmeye çalışalım.

Örneğin elimizde bir şekil olduğunu düşünelim ve bu şeklin çevresini hesaplamak istiyoruz. Bunu da bir program yardımıyla görmek istiyoruz. O halde yazacağımız kodlar;

public class main {
public static void cevre (int a, int b, int c) {
System.out.println ("Şeklin çevresi = " + (a+b+c)) ;
}
public static void main(String[] args) {
cevre(13,8,19) ;
}
}

biçiminde olur. Şimdiki haliyle görmüş olduğumuz fonksiyonların aynısı. Ama biz aşırı yükleme yani overloading durumunu görmek istiyoruz. O halde yapacağımız şey farklı parametrelerle bir fonksiyon daha yazmak ve bunu fonksiyon şeklinde çağırmak olmalı. 

 
public class main {
public static void cevre (int a, int b, int c) {
System.out.println ("Şeklin çevresi = " + (a+b+c)) ;
}

public static void cevre (int a, int b) {
System.out.println ("Şeklin çevresi = " + (a+b)) ;
}
public static void main(String[] args) {
cevre(13,8,19) ;
cevre(23,5) ;
}
}

Göründüğü üzere metod isimleri aynı, sadece üç parametre yerine iki parametre yazıldı ve çağırıldı. Ekran çıktısında da Toplamları: 40 ve Toplamları: 28 olur. 

Bir sonraki örnek de girilen sayının karesini alan program olsun. 

Örnekte karekok() isimli bir metod belirledik ve ilk olarak sayının karesini belirlemek için ilgili formülü yazdık. Aşırı yükleme yapabilmek için ilk metod int ile, ikinci metod ise double ile tanımlandı. Daha sonra ekran çıktısı olarak yazdırıldı. Yani karekok() metodu aşırı yüklenmiş oldu. 

Neden Overloading Yapıyoruz?

Bazen tek bir işlem için birbirinden farklı isimlerde metodlar kullanmanız gerekebilir. Bu durum da sizin için karışıklığa sebep olur. Kısa programlarda böyle bir sorunla karşılaşmanız çok mümkün değil ama aşırı derecede fazla kod içeren bir Java projesi yaptığınızzı düşünecek olursak bu durum daha gerçekçi olur. Nerede hangi fonksiyonu kullanmıştım, hangisini nasıl kullanmam gerekiyor gibi sorularla uğraşmak hayli zamanınızı alır. İşte overloading,  bu durumun önüne geçmeye ve size kolaylık sağlamaya yarıyor. Overloading sayesinde metodlar aşırı yükleme durumuna geçerek bir isimle birden fazla yerde farklı parametrelerle kullanılmaya imkan tanıyor. İşin rahat yanı da buradan kaynaklanıyor. 

Nesne tabanlı programların çoğunda overloading özelliği bulunuyor. Örneğin C programlama dili fonksiyonel bir dil olarak biliniyor ama onda overloading özelliği bulunmuyor. Metodları da kuralına göre yazmak zorunda kalıyorsunuz. 

Yukarıdaki program çalıştırıldığında overloading gerçekleşir ama sadece ikinci kısımda yer alan “yas” kriteri ekrana yazdırılır. Çünkü fonksiyonların ikisi de  string olarak çağırılır. Ama kodlar

haliyle yazıldığında bize ;

çıktısını verecektir.

Bir sonraki yazıda OOP ve class yapılarından bahsedeceğim. Tekrar görüşmek üzere. Hoşça kalın. 

“Java Eğitimi 15- Method Overloading” için 2 cevap

Yorum bırakın