Java Eğitimleri 32 – Polymorphism(Çok Biçimlilik)

Polymorphism yani çok biçimlilik kavramı, bir nesnenin birden fazla nesne gibi davranmasıdır. Diğer bir ifadeyle bir sınıfta birden fazla sınıf oluşturarak aynı kodun farklı farklı çıktılar alma şeklidir. Oluşturulan ana sınıftaki(superclass) metodlar, farklı isimdeki alt classlarda farklı görevler üstlenir. Böylece başka sınıflarda işlem yapmaya gerek kalmadan, aynı kodları override ederek işlemlerimizi gerçekleştirebiliriz.

           Polymorphism oluşması için inheritance yani kalıtım işlemlerinden faydalanılmaktadır. Bir örnek çözerek konuyu kavramaya çalışalım:

 

class Hayvan{
    
    private String isim;

    public Hayvan(String isim) {
        super();
        this.isim = isim;
    }

    public String getIsim() {
        return isim;
    }

    public void setIsim(String isim) {
        this.isim = isim;
    }
    
    public String Konus(){
        
        return "Hayvan Konuşuyor..";
    }
    
}

class Kedi extends Hayvan{

    public Kedi(String isim) {
        super(isim);
        
    }

    @Override
    public String Konus() {
        
        return this.getIsim() + " Miyavlıyor..";
    }
    
    
}

class Kopek extends Hayvan{

    public Kopek(String isim) {
        super(isim);
        
    }

    @Override
    public String Konus() {
        
        return this.getIsim() + " Havlıyor..";
    }
    
    
}

class Kus extends Hayvan{

    public Kus(String isim) {
        super(isim);
        
    }

    @Override
    public String Konus() {
        
        return this.getIsim() + " Ötüyor..";
    }
    
    
    
}
public class Text {

    public static void main(String[] args) {
        

        
        Hayvan kedi = new Kedi("Tekir");
        Hayvan kopek = new Kopek("Karabaş");
        Hayvan kus = new Kus("Boncuk");
        
        System.out.println(kedi.Konus());
        System.out.println(kopek.Konus());
        System.out.println(kus.Konus());
        
        
        
    }

}

 

Oluşturduğumuz hayvan sınıfı; kuş, köpek ve kedi sınıflarının, isim adlı değişkenine ulaşmasını sağlamaktadır. Böylece inheritance işlemi yapılmış bulunmaktadır. Konus adlı metodu, hayvan sınıfında oluşturduktan sonra, diğer sınıflarda da aynı isimle(Konus ismiyle) oluşturduğumuzda override işlemi de gerçekleşmiş bulunmaktadır.

 

Main metodunda oluşturduğumuz kodlar, polymorphism işleminin gerçekleştiğinin kanıtıdır. Normalde,  tüm sınıfları ayrı ayrı oluşturmak gerekmekteyken, polymorphism işlemiyle sadece hayvan sınıfını oluşturduktan sonra kedi, köpek ve kuş sınıflarındaki değişken değerlerini de yazdırmış bulunmaktayız. Çıktımız:

 

 

Bu metodları şu şekilde de de yazabilirdik:

 

public class Text {
    
    public static void Konustur(Hayvan h){
        
        System.out.println(h.Konus());
        
    }

    public static void main(String[] args) {
        

        
        Konustur(new Kedi("Tekir"));
        Konustur(new Kopek("Karabaş"));
        Konustur(new Kus("Boncuk"));
        
        
        
        
    }

}

 

Main kısmındaki kodlarımızı yukarıdaki gibi değiştirdiğimizde de çıktımızda bir değişiklik olmayacaktır. Eğer override işlemimiz kedi, kopek ya da kus adlı sınıflarımızda herhangi biri ya da birkaçında override edilmemişse çıktımız alttaki gibi olur:

 

 

Burada da konuş adlı metodu belirtilen(Kedi,Kopek,Kus) sınıflarda göremediği için Hayvan adlı sınıftaki Konus adlı metodu çalıştırmış ve çıktımız oradaki metoda uygun olarak gerçekleşmiştir.

Polymorphism kavramını da böylece bitirmiş olduk. Diğer yazımızda da polymorphism için önemli olan bir anahtar kelimeden bahsedeceğiz. İyi çalışmalar 🙂

Published by

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s