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.
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.