Nesne yönelimli programlama (OOP), gerçek dünyadaki varlıkların modellemesini ve bunların etkileşimini sağlayan bir yaklaşımdır. Java, popüler bir OOP dilidir ve özellikle büyük ve karmaşık projelerin geliştirilmesinde sıklıkla tercih ederiz. Java’nın en güçlü özelliklerinden biri polymorphismdir. Bu yazımızda, Java polymorphism konusunun ne olduğunu, nasıl çalıştığını ve nasıl kullanıldığını ele alacağız.

Polymorphism Nedir ?

Polymorphism, “çok biçimlilik” anlamına gelir ve OOP’de farklı nesnelerin aynı arabirim üzerinden çalışabilmesini sağlar. Başka bir deyişle, bir nesnenin farklı tiplere dönüşebilmesi ve her bir tipe özgü davranış sergileyebilmesidir. Polymorphism, sınıflar arasındaki ilişkilerin soyutlamasını sağlayarak kodun daha esnek, ölçeklenebilir ve yeniden kullanılabilir olmasını sağlar.

Java’da polymorphism, temel olarak miras (inheritance) ve arayüzler (interfaces) üzerine kuruludur. Bir üst sınıf (superclass) veya bir arayüz (interface) tanımlayarak, bu üst sınıftan türetilen alt sınıfların (subclass) aynı yöntemleri farklı şekillerde uygulayabilmesini sağlarız. Böylece, farklı türlerdeki nesneleri aynı şekilde kullanabiliriz.

Java Örneği

class Hayvan {
    public void sesCikar() {
        System.out.println("Hayvan sesi!");
    }
}

class Kedi extends Hayvan {
    public void sesCikar() {
        System.out.println("Miyav!");
    }
}

class Köpek extends Hayvan {
    public void sesCikar() {
        System.out.println("Hav hav!");
    }
}

public class PolymorphismOrnegi {
    public static void main(String[] args) {
        Hayvan hayvan1 = new Kedi();
        Hayvan hayvan2 = new Köpek();

        hayvan1.sesCikar();  // "Miyav!" çıktısını verir
        hayvan2.sesCikar();  // "Hav hav!" çıktısını verir
    }
}

Yukarıdaki örnekte, Hayvan sınıfı üst sınıf olarak kullanılır ve sesCikar() isimli bir yöntem tanımlanır. Kedi ve Köpek sınıfları, Hayvan sınıfından türetilen alt sınıflardır ve sesCikar() yöntemini geçersiz kılarlar.

Bu yazı dikkatini çekebilir.   Javascript Döngüler (For, While, Do-While)

Ana metotda, hayvan1 değişkeni Kedi sınıfının bir örneği ile ve hayvan2 değişkeni Köpek sınıfının bir örneği ile tanımlanır. Bu durumda, polymorphism devreye girer ve sesCikar() yöntemi, her bir hayvan örneği için ilgili alt sınıfın yöntemini çağırır.

Sonuç olarak, hayvan1.sesCikar() ifadesi Kedi sınıfının sesCikar() yöntemini çağırır ve “Miyav!” çıktısını verir. Benzer şekilde, hayvan2.sesCikar() ifadesi Köpek sınıfının sesCikar() yöntemini çağırır ve “Hav hav!” çıktısını verir.


Bu yazımızda, Java polymorphism konusunun ne olduğunu, nasıl çalıştığını ve nasıl kullanıldığını ele aldık. Daha fazlası için ‘Java Dersleri‘ adlı kategorimize göz atabilirsiniz.