
Java Polymorphism Nedir? – Java Polymorphism Örnekleri
Java’da Polymorphism, aynı adı taşıyan ancak farklı parametrelerle çalışan metotların kullanımına izin veren bir özelliktir. Polymorphism, “çok biçimlilik” anlamına gelir ve nesne yönelimli programlamada önemli bir kavramdır.

Polymorphism, iki şekilde gerçekleştirilir: Overloading ve Overriding. Overloading, aynı sınıfta farklı parametrelerle aynı isimli metotların tanımlanmasına izin verir. Overriding ise, alt sınıfların üst sınıfların metotlarını ezmesine izin verir. Peki Java Polymorphism Nedir? – Java Polymorphism Avantajları – Java Polymorphism Dezavantajları – Java Polymorphism Örnekleri nelerdir?
Aşağıda Overloading ve Overriding örnekleri verilmiştir:
// Overloading örneği
public class HesapMakinesi {
public int topla(int x, int y) {
return x + y;
}
public double topla(double x, double y) {
return x + y;
}
}
// Overriding örneği
public class Sekil {
public void ciz() {
System.out.println("Sekil cizildi.");
}
}
public class Dikdortgen extends Sekil {
@Override
public void ciz() {
System.out.println("Dikdortgen cizildi.");
}
}
Yukarıdaki örnekte, HesapMakinesi sınıfında Overloading kullanılarak toplama işlemi farklı veri tipleri için tanımlanmıştır. Sekil sınıfında ise Overriding kullanılarak ciz() metodu alt sınıf tarafından ezilmiştir.
Java Polymorphism 10 Örnek Kod
Java Polymorphism örnekleri aşağıdaki gibi olabilir:
Overloading Örneği
public class HesapMakinesi {
public int topla(int x, int y) {
return x + y;
}
public int topla(int x, int y, int z) {
return x + y + z;
}
public double topla(double x, double y) {
return x + y;
}
}
Overriding Örneği
public class Sekil {
public void ciz() {
System.out.println("Bir şekil çiziliyor.");
}
}
public class Dikdortgen extends Sekil {
@Override
public void ciz() {
System.out.println("Bir dikdörtgen çiziliyor.");
}
}
Polymorphic Parametre Kullanımı
public class Sekil {
public void ciz() {
System.out.println("Bir şekil çiziliyor.");
}
}
public class Dikdortgen extends Sekil {
@Override
public void ciz() {
System.out.println("Bir dikdörtgen çiziliyor.");
}
}
public class SekilCizici {
public void ciz(Sekil sekil) {
sekil.ciz();
}
}
Polymorphism Kullanarak Nesne Oluşturma
public class Sekil {
public void ciz() {
System.out.println("Bir şekil çiziliyor.");
}
}
public class Dikdortgen extends Sekil {
@Override
public void ciz() {
System.out.println("Bir dikdörtgen çiziliyor.");
}
}
public class SekilFabrikasi {
public Sekil sekilUret(String tip) {
if (tip.equals("dikdortgen")) {
return new Dikdortgen();
} else {
return new Sekil();
}
}
}
Overloading Kullanarak Hesap Makinesi
public class HesapMakinesi {
public int topla(int x, int y) {
return x + y;
}
public double topla(double x, double y) {
return x + y;
}
public int topla(int x, int y, int z) {
return x + y + z;
}
}
Overriding Kullanarak Hayvan Sınıfı
public class Hayvan {
public void yemek() {
System.out.println("Bir şeyler yiyiliyor...");
}
}
public class Kedi extends Hayvan {
@Override
public void yemek() {
System.out.println("Balık yiyiliyor...");
}
}
public class Kopek extends Hayvan {
@Override
public void yemek() {
System.out.println("Kemik yiyiliyor...");
}
}
Polymorphism Avantajları Nelerdir?
Java Polymorphism, yazılım geliştirme sürecinde birçok avantaj sağlar. İşte bunlardan bazıları:
- Kodun yeniden kullanılabilirliğini artırır: Polymorphism sayesinde, farklı sınıfların aynı metotlara erişebilmesi sağlanır. Bu, kodun yeniden kullanılabilirliğini artırır.
- Kodun okunabilirliğini artırır: Polymorphism, kodun okunabilirliğini artırır. Birden çok sınıfın aynı metotları kullanması, kodun daha anlaşılır hale gelmesine yardımcı olur.
- Kodun sürdürülebilirliğini artırır: Polymorphism, kodun sürdürülebilirliğini artırır. Sınıflar arasındaki bağımlılıkları azaltır ve değişikliklerin daha az etkili olmasını sağlar.
- Esnekliği artırır: Polymorphism, kodun esnekliğini artırır. Aynı metot farklı parametrelerle kullanılabilir ve bu da kodun çeşitli senaryolarda kullanılabilmesini sağlar.
- Daha az kod yazımı gerektirir: Polymorphism, aynı kod bloklarını tekrar tekrar yazmak yerine bir kez yazılmasına olanak tanır. Bu da kodun daha az yazılmasını ve daha az hata yapılmasını sağlar.
- Kodun yeniden kullanılabilirliğini artırır: Polymorphism, farklı sınıfların aynı metotlara erişebilmesi sayesinde kodun yeniden kullanılabilirliğini artırır. Bu da daha az kod yazılması anlamına gelir.
- Polymorphism, kodun daha modüler hale gelmesine yardımcı olur. Bu sayede, kodun farklı bölümlerinin daha bağımsız hale gelmesi ve birbirinden daha az etkilenmesi sağlanır.
Polymorphism Dezavantajları Nelerdir?
Java Polymorphism’ın bazı dezavantajları şunlardır:
- Performans kaybı: Polymorphism, kodun çalışma süresini artırabilir. Çünkü, işlevin çağrılacağı doğru sınıfın bulunması için çalışma zamanında ekstra işlemler yapılması gerekebilir.
- Karışıklık: Çoklu kalıtım kullanımı, karmaşık bir kod yapısı oluşturabilir. Bu, kodun anlaşılmasını zorlaştırabilir.
- Hata ayıklama zorluğu: Polymorphism kullanımı, hata ayıklama sürecini zorlaştırabilir. Çünkü, bir metot hangi sınıfın kullanılacağına çalışma zamanında karar verildiğinden, hataların nedeni belirlemek zorlaşabilir.
- Fazla genelleştirilmiş kod: Polymorphism, bazen aynı işlevselliğin farklı sınıflar için farklı şekillerde uygulanması nedeniyle fazla genelleştirilmiş kod oluşturabilir.
- Sınırlı özellikler: Polymorphism, bazı durumlarda özelliklerin sınırlı olmasına neden olabilir. Örneğin, Java’da bir sınıf birden fazla sınıftan miras alamaz. Bu nedenle, sınıf hiyerarşisi düzenlenirken bazı sınırlamalar olabilir.
- Uzun geliştirme süresi: Polymorphism’ın kullanımı, geliştirme sürecini uzatabilir. Çünkü, sınıf hiyerarşisi doğru bir şekilde oluşturulmalı ve tüm metotlar uygun bir şekilde tasarlanmalıdır.