Java’da Overloaded Nedir,Overriding ile farkları Nelerdir?

Herkese merhabalar,

Bugünkü yazımızda Overloaded ve Overriding/Overloaded farklarının neler olduğunu detaylı inceleyeceğiz.

Overloaded(Fazla Yüklenmiş) Metotlar

Java kullanıcıların en çok merak ettiği konu overloaded metot nedir overriding ile farkı nedir?

Overloaded metotlar,bir sınıfta aynı metot adını farklı bağımsız değişkenlerle (ve isteğe bağlı olarak farklı bir dönüş türüyle) yeniden kullanmamızdır. Bir metodu overloaded etmek, genellikle metotları kullananlara biraz daha iyi davrandığınız anlamına gelir :)Çünkü metot içinde yazılan kod, arayanı metotdu çağırmadan önce dönüşümler yapmaya zorlamak yerine, farklı argüman türleriyle başa çıkmak demektir.

Peki Overloaded Kuralları nelerdir.

■Overloaded metodun parametreleri değişmelidir.(MUST

■ Overloaded metodun dönüş tipi değiştirilebilir.(CAN)

■ Overloaded metodun erişim belirticisi(access modifiers) değiştirilebilir.(CAN)

■ Overloaded metot yeni veya daha genişletimiş exception(hata) fırlatabilir.(CAN)

■ Bir metot, aynı sınıfta veya bir alt sınıfta overloaded edilebilir.(CAN).Başka bir deyişle, A sınıfı bir yukle(int i) metodunu tanımlarsa, B alt sınıfı, int alan üst sınıf sürümünü geçersiz kılmadan yukle(String s) metodunu tanımlayabilir.

Yasal Overloaded Metot Yazımları

public void boyutDegistir(int boy, String ad, float sekil) { }

boyutDegistir için yasal overloaded metotları

public void boyutDegistir(int boy, String ad) { }

public int boyutDegistir(int boy, float sekil) { }

public void boyutDegistir(float sekil, String ad) throws IOException { }

Peki Yazılan Overloaded metotları Nasıl Çağıracağız?

Yazılan overloaded metotları compiler nasıl anladığı sorusu hemen akla geliyor.overloaded olarak yazılan metotların parametresi hangi türden ise onu o metodu çağırarak yapılır.metot paramteresien string değişken yazılırsa o ilgili metot string parametere alan metot çalışır. Örneğin.

class Toplama {

public int ikiliTopla(int x, int y) {return x + y;}

// Overloaded ikiliTopla metot int yerine double dönüyor

public double ikiliTopla(double x, double y) {return x + y;}

}

// baska bir sınıftan ikiliTopla metodunu cagırma

public class TestToplama {

public static void main (String [] args) {

Toplama t = new Toplama();

int b = 27;int c = 3;

int sonuc = t.ikiliTopla(b,c); // peki hangi metot cağrıldı ?

double doubleToplam = t.ikiliTopla(22.5,9.3); // hangi metot cağrıldı ?

}}

ilk çağırılan ikiliTopla metodu int parametre aldığı ve int deger döndürdüğü için ikiliTopla(int x,int y) metodu çalışır.

İkinci içinde t.ikiliTopla(22.5,9.3) double alan parametre olduğu için ikinci metot kullanılır.

Overloaded metotlarda reference object parametre geçilirse ufak bir farklılık olulyor. :)

class Hayvan { }

class At extends Hayvan { }

class Hayvanlar {

public void yemekYe(Hayvan h) {

System.out.println(“Hayvanlar Yemek Yer!”);}

public void yemekYe(At a) {

System.out.println(“Atlar Ot Yer!”);}

public static void main (String [] args) {

Hayvanlar hl = new Hayvanlar();

Hayvan hayvan = new Hayvan();

At a = new At();

hl.yemekYe(hl);

hl.yemekYe (a);

}}

çıktı

Hayvanlar Yemek Yer!

Atlar Ot Yer!

Fakat Değişkilik yaparsak Hayvan bir Attır dersek.

Hayvan h=new At();

h.yemekYe(h); //hayvanın referance objesini at yaparsak

Hangi overloaded metot kullanılır?

çıktı;

Hayvanlar Yemek Yer!

Javada overloaded metotlar için runtime da oluşan refence tipi yerine compiletime da kullanılan reference object esas alınır.

Hayvan h=new At();

için hayvan metotdunun parametre olarak esas alınır.

Acaba Polymorfizm( Çok Çeşitlilik) Overloaded ve Overriding de nasıl işliyor?

Overloaded metotlarda reference tipi compiletime da verilen tipi olduğudan polymorfim geçerli değildir.Üst sınıf ile kendi sınıfında aynı metodu hem overload hemde overriding olarak kullanılabilir.Bunu bi örnekle açıkayalım.

public class Hayvan {

public void yemek() {System.out.println(“Hayvanlar yemek yerler”);}}

public class At extends Hayvan {

public void yemek() {System.out.println(“atlar ot yerler”);}

public void yemek(String s) {System.out.println(“Atlar” + s);}

}

Yukardaki metotları çağırdığımızda nasıl cevap alırız?

Overriding ve Overloaded Metot karşılaştırması

Bir tablo yaparak Overloaded,Overriding arasındaki farkları gösterdik.

Son bir not verirsek,Sınıf ilişkilerine göre Overloaded,Overriding metotlar kullanılabilir.Bir sınıf hem Overriding hemde Overloaded olarak alt sınıfta oluşturulabilir.

Yazımızdaki Kodlar ve daha fazlası sitemizde yeralmaktadır. http://latestsoftwaredevelopers.com/

Bugünkü yazımızda Overloaded konusunu ve Overriding ile farklarını detaylı inceledik. Umarız faydalı bir yazı olmuştur .Takip etmeyi unutmayın:)

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *