Javada Polimorfizm (Çok Biçimlilik)
Java’da polimorfizm (çok biçimlilik) nedir, nasıl çalışır? Overriding ve interface ile polimorfik yapılar nasıl kurulur? Örneklerle anlatıyoruz.
Java’da Polimorfizm (Çok Biçimlilik) Nedir?
Java programlamada polimorfizm, aynı işlevin farklı biçimlerde gerçekleştirilmesini sağlayan nesne yönelimli bir özelliktir. Polimorfizm sayesinde aynı metot adıyla farklı sınıflarda farklı davranışlar elde edilebilir. Bu yapı, yazılımda esneklik ve genişletilebilirlik sağlar.
1. Polimorfizm Türleri
- Compile-time (Derleme Zamanı) Polimorfizm: Method Overloading (Metot Aşırı Yükleme)
- Runtime (Çalışma Zamanı) Polimorfizm: Method Overriding (Metot Ezme)
2. Method Overloading (Aynı Metot Adıyla Farklı Parametreler)
Bir sınıfta aynı isimde birden fazla metot tanımlanabilir, ancak parametre sayısı ya da tipi farklı olmalıdır.
class Hesaplayici {
int topla(int a, int b) {
return a + b;
}
double topla(double a, double b) {
return a + b;
}
}
Bu yapıda topla metodu hem int hem double parametrelerle çalışabilir. Bu compile-time polymorphism örneğidir.
3. Method Overriding (Üst Sınıf Metodunun Ezilmesi)
Bir alt sınıf, üst sınıftan miras aldığı metodu kendi ihtiyacına göre yeniden tanımlayabilir.
class Hayvan {
void sesCikar() {
System.out.println("Hayvan ses çıkarıyor");
}
}
class Kopek extends Hayvan {
void sesCikar() {
System.out.println("Köpek havlıyor");
}
}
Hayvan h = new Kopek(); h.sesCikar(); // Köpek havlıyor
Bu örnekte runtime polymorphism gerçekleşmiştir. Hangi metodun çalışacağı çalışma zamanında belirlenir.
4. Polimorfizmin Faydaları
- Kod tekrarını azaltır
- Bakımı ve genişletmesi kolay sistemler oluşturur
- Gerçek dünya modellemelerine uygunluk sağlar
- Interface ve abstract class’lar ile birlikte esneklik kazandırır
5. Interface ile Polimorfizm
Bir interface’i uygulayan farklı sınıflar, aynı metodu farklı biçimlerde gerçekleştirebilir.
interface Arac {
void hareketEt();
}
class Araba implements Arac {
public void hareketEt() {
System.out.println("Araba tekerlekleriyle hareket eder");
}
}
class Gemi implements Arac {
public void hareketEt() {
System.out.println("Gemi suda yüzer");
}
}
class Test {
public static void main(String[] args) {
Arac a1 = new Araba();
Arac a2 = new Gemi();
a1.hareketEt();
a2.hareketEt();
}
}
Java polimorfizm yapısı, yazılımda farklı nesneleri ortak bir yapı altında birleştirerek daha esnek, sürdürülebilir ve güçlü sistemler kurmayı mümkün kılar. Nesne yönelimli programlamanın en önemli ilkelerinden biri olan bu yapı, özellikle büyük projelerde farklı sınıflar arasında uyumlu bir çalışma ortamı yaratır.