Java’da Runtime Polymorphism

sametklou

Java’da Runtime Polymorphism

Java programlama dilinde çoklu şekillendirme veya "polymorphism" olarak bilinen bir kavram vardır. Runtime polymorphism, çalışma zamanında hangi metotun çağrılacağının belirlendiği bir kavramdır. Java'da bu konsept, super sınıfın bir referansı altında, alt sınıflardan gelen nesnelerin kullanılmasıyla gerçekleşir.

Polymorphism Nedir?

Polymorphism, bir nesnenin farklı şekillerde davranabilme yeteneği anlamına gelir. Java'da bu, bir methodun farklı şekillerde çalışabilmesi demektir. Böylece aynı isimdeki methodlar, farklı sınıflardaki objeler tarafından farklı şekilde kullanılabilir.

Örnek Bir Kod Parçası

Şimdi basit bir örnek üzerinden Runtime Polymorphism'i açıklayalım:

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

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

class Kopek extends Hayvan {
    void sesCikar() {
        System.out.println("Hav");
    }
}

public class Main {
    public static void main(String[] args) {
        Hayvan hayvan1 = new Kedi();
        Hayvan hayvan2 = new Kopek();
        
        hayvan1.sesCikar(); // "Miav" çıktısı alınır
        hayvan2.sesCikar(); // "Hav" çıktısı alınır
    }
}

Yukarıdaki örnekte, Hayvan sınıfından türetilen Kedi ve Kopek sınıfları bulunmaktadır. Hayvan sınıfından referans alarak bu sınıfların objelerini oluşturduğumuzda, çağrılan sesCikar metotları sınıfların kendi implementasyonlarına göre çalışır. Böylece Runtime Polymorphism özelliği açıkça görülmektedir.

Runtime Polymorphism, Java'da inheritance (kalıtım) ve overriding (geçersiz kılma) konseptleriyle birlikte çalışır. Bu sayede kodun daha esnek, uzun ömürlü ve bakımı kolay olur.

Java'da Runtime Polymorphism kavramını anlamak için örnekleri çalıştırarak denemeniz, konuyu daha iyi kavramanıza yardımcı olacaktır. Yukarıdaki örnekten yola çıkarak, kendi sınıflarınızı yaratarak ve bu sınıfları işleyen methodlar oluşturarak Runtime Polymorphism'i daha derinlemesine inceleyebilirsiniz.