Java Eğitimi 26-Java Polymorphism

Herkese merhabalar,

Java öğrenmeye kaldığımız yerden devam ediyoruz. Bu yazıda “Java dilinde polymorphism nedir, hangi durumlarda nasıl kullanılır?” gibi soruların cevaplarını bulabilirsiniz.

Polymorphism(polimorfizm), bir varlık ya da nesnenin birden fazla forma sahip olması olarak adlandırılır. Yani oluşturduğumuz bir nesne kendisi gibi değil de başka bir nesne gibi davranıyorsa buna polymorphism diyoruz. Çok biçimlilik de denilebilir. Kalıtım konusu ile ilişkili bir kavramdır. İlk başta zor bir yapısı olduğu düşünülebilir ama örnekler yaparak ve konuyla alakalı proje ya da sorularla iç içe oldukça bu ön yargı kolayca yıkılabilir. 

Peki ne işimize yarar bu özellik?

Bildiğiniz gibi, kalıtım konusundan itibaren kodları yeniden kullanmak yerine kodu geliştirerek verimi artırmaya ve fazla kodlardan kurtulmaya çalıştık. Polymorphism de kalıtıma bağlı programlama unsuru olduğu için onunla benzer görevleri görür. Kelimede yer alan poly ifadesi “birden çok” anlamına gelir. Morph ise “şekil, görüntü” anlamında kullanılır. Bu açıdan bakıldığında da birden fazla görüntü anlamını çıkarabiliriz ki bu çıkarım da bize polymorphism’in amacını açıklar. 

Elimizde farklı biçimlerde çalışan nesneler olsun. Ama biz bu nesnelere aynı şekilde ulaşmak istiyoruz diyelim. İşte o zaman polymorphism özelliği bizim en büyük yardımcımız olacaktır. Elimizdeki nesneler farklı bir nesne gibi davranarak istediğimiz koşulları bize sağlamış olur. 

O halde bir örnekle başlayarak konuyu pekiştirelim. 

public class alışveriş {

public void marketegit(){
System.out.println("Evde yiyecek yok,markete gitmek gerekiyor.");
}

public void dışarıÇık() {
// TODO Auto-generated method stub

}
}

Anne adında bir sınıf tanımlayarak marketegit metodunu ekleyelim.

public class anne extends alışveriş{

public void marketegit(){
System.out.println("Anne markete gitti");
}
}

Aynı şekilde bir de baba sınıfı açalım ve anne sınıfında yapılan işlemi tekrarlayalım.

public class baba extends alışveriş {

public void marketegit(){
System.out.println("Baba markete gitti");
}
}

Ve son olarak bir sınıf daha açalım ve nesneleri oluşturup metodumuzu çağıralım. 

public class polymorphism {
public static void marketegit(alışveriş avm){

avm.marketegit();
}
public static void main(String[] args) {
alışveriş avm=new alışveriş();
anne anne=new anne();
baba baba=new baba();
marketegit(avm);
marketegit(anne);
marketegit(baba);
}
}

Programımızın çıktısı da;

şeklinde olur. 

Polymorphism kavramı birkaç kavramı da beraberinde getirir. Şimdi sizlere bu kavramlardan bahsedeceğim.

Late Binding(Geç bağlama): Polymorphism oluştuğu anda(çalıştırıldığı sırada) nesnenin bağlanacağı nesne türünün seçilmesi ve buna uygun  işlemlerin yapılması sürecidir. Polymorphism olmadığı sürece geç bağlama kavramından bahsedemeyiz. 

Instanceof Metodu: Bu kelime ile oluşturulan nesnelerin hangi sınıfta yer alacağı belirlenir. Polymorphism olmadığında kullanılır. Metodun solunda referans, sağında ise tip yer alır. Referansın, instanceof metodunun sağında yer alan tip ile aynı olup olmadığını kontrol eder. Eğer ifade doğru ise yani aynı tiptelerse true, yanlışsa false değerini döndürür. Örneğin;

public class a{

}
public class b{

}
public class a_1 extends a{

}
public class b_1 extends b{

}

şeklinde 4 farklı class açalım. Ve son olarak da

public class metod {

public static void main(String[] args){
a A=new a();
b B=new b();
a1 a_1=new a1();
b1 b_1=new b1();
System.out.println(A instanceof a);
System.out.println(a_1 instanceof a);
System.out.println(B instanceof b);
System.out.println(b_1 instanceof b1);
}
}

sınıfı ile instanceof metodunu kullanalım. Tanımladığımız nesneler üretildikleri sınıf elemanlarına karşılık geldiği için;

değerlerini döndürür. 

Şimdilik burada bitiriyorum. Bir sonraki yazımda görüşmek dileğiyle. Hoşça kalın. 

Yorum bırakın