Çok Biçimlilik Nedir?
İngilizce: Polymorphism
Yayın: · Son güncelleme:
Çok Biçimlilik Nedir? Kısaca
Çok biçimlilik (polymorphism), nesne yönelimli programlamada aynı adlı metot çağrısının, çağrıldığı nesnenin türüne göre farklı biçimde çalışmasıdır. Böylece farklı nesneler tek ve ortak bir arayüzle kullanılabilir.

İçindekiler
Çok biçimlilik nedir?
Çok biçimlilik, aynı komutun farklı nesnelerde farklı sonuç üretmesidir. Bir uygulamada KrediKarti, Havale ve KapidaOdeme sınıflarının her birinde ode() metodu olduğunu düşünün. Program yalnız odeme.ode() der; kart ise banka onayı ister, havale IBAN bilgisi gösterir, kapıda ödeme ise kuryeye not düşer.
Kelime Yunanca "çok" ve "biçim" sözcüklerinden gelir ve İngilizcede polymorphism olarak geçer. Kısaca "tek arayüz, çok uygulama" diye özetlenebilir.
Nasıl çalışır?
En yaygın biçim, kalıtım ve metot ezmeyle kurulur. Ortak bir üst sınıf ya da arayüz ode() metodunu tanımlar, her alt sınıf bu metodu kendi kuralına göre yeniden yazar. Program çalışırken hangi sürümün çağrılacağı, nesnenin gerçek türüne bakılarak belirlenir.
Bunun pratik faydası şudur: sepet ekranındaki kod, ödeme türlerini tek tek kontrol eden uzun bir if-else zinciri yerine tek satırla çalışır. Yarın "dijital cüzdan" adlı yeni bir ödeme yöntemi eklendiğinde, sepet kodu değişmez; yalnız yeni sınıf yazılır.
Türleri
Kavram iki ana türde incelenir. Çalışma zamanı çok biçimliliği, yukarıdaki gibi metot ezmeye dayanır. Derleme zamanı çok biçimliliği ise aynı adlı metodun farklı parametrelerle birden fazla kez tanımlanmasıdır; buna metot aşırı yüklemesi (overloading) denir. Java'da topla(int, int) ve topla(double, double) aynı sınıfta yan yana durabilir.
Python gibi dinamik dillerde "ördek tipi" yaklaşımı da yaygındır: bir nesne ode() metoduna sahipse, hangi sınıftan geldiğine bakılmadan kullanılır. Kendi kodunuzda tür kontrolü yapan uzun koşul zincirleri görüyorsanız, çok biçimlilikle sadeleştirmeyi düşünebilirsiniz.
Sıkça Sorulan Sorular
Polymorphism ne demek?
Polymorphism, Türkçede çok biçimlilik olarak karşılanır. Aynı adlı metodun farklı nesnelerde farklı davranış göstermesini anlatan nesne yönelimli programlama ilkesidir.
Overloading ile overriding arasındaki fark nedir?
Overloading, aynı sınıfta aynı adlı metodun farklı parametrelerle birden fazla tanımlanmasıdır. Overriding ise alt sınıfın, üst sınıftan devraldığı metodu yeniden yazmasıdır.