Java'daki Polimorfizm Türleri [Örneklerle Statik ve Dinamik Polimorfizm]
Yayınlanan: 2021-06-18İçindekiler
Java'da Polimorfizm nedir?
Nesneye Yönelik Programlama'daki (OOP) önemli kavramlardan biri, tek bir eylemin farklı şekillerde gerçekleştirilebileceği anlamına gelen polimorfizmdir. Yunanca sözcüklerden türetilmiştir: çok ve biçimler anlamına gelen poly ve morphs. Kalıtım yoluyla ilişkili olduklarında farklı formlar var olur.
Farklı bir sınıftan yöntemleri ve nitelikleri miras alan kalıtım gibi, polimorfizm de bu yöntemleri uygular ve farklı görevleri yerine getirir. Bir nesne, polimorfizm yoluyla kendisini çeşitli biçimlere dönüştürebilir.
Yani bir varlık, farklı senaryolarda farklı işlemler gerçekleştirebilir. Nesneye Yönelik Programlamada polimorfizmin en yaygın kullanımlarından biri, bir alt sınıf nesnesine atıfta bulunmak için bir üst sınıf referansının kullanılmasıdır. Çeşitli OOP kavramları ve örnekleri hakkında daha fazlasını okuyun.
Java'da polimorfizm üç yöntemle elde edilebilir:
Yöntem Geçersiz Kılma: Bir üst sınıf ve bir alt sınıf aynı yöntemden oluşuyorsa, yöntem geçersiz kılma, üst sınıftaki yöntemin alt sınıftaki yöntemle geçersiz kılınması sürecini ifade eder. Sonuç olarak, farklı işlemler gerçekleştiren farklı koşullarda aynı yöntem kullanılacaktır.
Programın çıktısı:
Java Programlama Dili
Ortak İngilizce Dili
- Yöntem Aşırı Yüklemesi: Yöntem aşırı yüklemesi, aynı adla ancak farklı parametrelerle yöntemlerin oluşturulması sürecini ifade eder. Örnekler şunları içerir: void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.
Çıktı
**********
##########
- Operatör aşırı yüklemesi: Operatör aşırı yüklemesi, Java'da bir operatörün farklı işlenenlerle farklı davrandığı bir kavramdır. Örnekler şunları içerir:
- “+” operatörü hem sayısal toplamada hem de dizi bitiştirmede kullanılabilir.
sayısal ekleme | dize birleştirme |
int a = 5; int b = 6; int toplam = a + b; // Çıktı = 11 | Önce dize = “Python”; İkinci dizi = “Programlama”; isim = birinci + ikinci; // Çıktı = Python Programlama |
- Operatörler &,|, ve ! mantıksal ve bit düzeyinde aşırı yükleme için kullanılabilir.
Java'da Polimorfizm Türleri
Nesneye Yönelik Programlama, dört temel kavram üzerine odaklanır: soyutlama, kapsülleme, kalıtım ve polimorfizm. Polimorfizm, nesneleri sınıflarına ve veri türlerine göre farklı şekilde işleme yeteneğidir.
Java'da iki tür polimorfizm vardır : Java'da derleme zamanı polimorfizmi ve çalışma zamanı polimorfizmi . Bu java polimorfizmi , statik polimorfizmler ve dinamik polimorfizmler olarak da adlandırılır.
1. Statik polimorfizm (veya derleme zamanı polimorfizmi)
Diğer OOP programlama dillerinin çoğu gibi, Java polimorfizmi de bir sınıf içinde birden çok yöntemin dahil edilmesine izin verir. Yöntemler aynı adı kullanır ancak parametre değişir. Bu, statik polimorfizmi temsil eder. Bu polimorfizm, derleyici süresi boyunca çözülür ve yöntem aşırı yüklemesi yoluyla elde edilir. Parametre kümelerinin farklı olması gereken üç kriter sağlanmıştır:
- Parametre sayısı değişmelidir.
- Parametre türleri farklı olmalıdır.
- Farklı parametre sırası. Örneğin, bir yöntem bir dizeyi ve bir uzun dizeyi kabul ederken, diğer yöntem bir uzun ve bir dizeyi kabul ederse. Ancak bu tür bir sıralama API'nin anlamasını zorlaştırır.
Parametrelerdeki farklılık nedeniyle, her yöntemin farklı bir imzası vardır. Java derleyicisinin hangi yöntemin çağrıldığı hakkında bir fikri vardır.
Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
Statik polimorfizm örneği
Java'nın statik polimorfizmi destekleme yollarından biri, yöntem aşırı yüklemesidir. Statik polimorfizmde yöntem aşırı yükleme durumunu gösteren bir örnek aşağıda gösterilmiştir:
Örnek vermek:
sınıf Basit Hesap Makinesi
{
int ekle(int a, int b)
{
a+b'yi döndür;
}
int ekle(int a, int b, int c)
{
a+b+c'yi döndür;
}
}
genel sınıf Demosu
{
public static void main(String args[])
{
SimpleCalculator nesnesi = yeni SimpleCalculator();
System.out.println(obj.add(25, 25));
System.out.println(obj.add(25, 25, 30));
}
}
Programın çıktısı
50
80
2. Dinamik Polimorfizm (veya Java'da çalışma zamanı polimorfizmi)
Java'daki bu polimorfizm biçiminde , derleyici yürütülecek yöntemi belirlemez. Çalışma zamanında işlemi gerçekleştiren Java Sanal Makinesidir (JVM). Dinamik polimorfizm, çalışma zamanında geçersiz kılınan bir sürece yapılan bir çağrının çözümlendiği süreci ifade eder. Bir üst sınıfın referans değişkeni, geçersiz kılınan yöntemi çağırır. Hem alt sınıf hem de üst sınıf tarafından uygulanan yöntemler, aynı adı paylaşırken farklı işlevler sağlar.
Çalışma zamanı polimorfizmi kavramını anlamadan önce Upcasting sürecini anlamak çok önemlidir. Upcasting, alt sınıfın bir nesnesine üst sınıfın bir referans değişkeni tarafından atıfta bulunulan süreci ifade eder. PHP'de polimorfizm hakkında bilgi edinin.
Dinamik polimorfizm (veya çalışma süresi) örneği
Örnek 1:
İki sınıf Bike ve Splendor oluşturulur ve Splendor sınıfı, run() yöntemini geçersiz kılarak Bike sınıfını genişletir. run() yöntemi, üst sınıfın başvuru değişkeni tarafından çağrılır. Alt sınıf yöntemi, üst sınıf yöntemini geçersiz kıldığı için; alt sınıf yöntemi çalışma zamanında çağrılır.
program
sınıf Bisikleti{
void run(){System.out.println(“çalışıyor”);}
}
class Splendor , Bisikleti genişletiyor {
void run(){System.out.println(“30km güvenle yürümek”);}
halka açık statik void main(String args[]){
Bisiklet b = new Splendor();//upcasting
b.run();
}
}
Çıktı: 60km güvenle yürümek
Örnek 2
XYZ'nin bir alt sınıf ve ABC'nin bir üst sınıf olduğu “ABC” ve “XYZ” adlı iki sınıf oluşturulur. Burada, üst sınıfın myMethod() yöntemi, alt sınıf tarafından geçersiz kılınır. Alt sınıf nesnesi, üst sınıf referansına atanır.
Program:
sınıf ABC{
public void myMethod(){
System.out.println(“Geçersiz Kılınan Yöntem”);
}
}
genel sınıf XYZ, ABC'yi genişletir{
public void myMethod(){
System.out.println(“Geçersiz Kılma Yöntemi”);
}
public static void main(String args[]){
ABC nesnesi = yeni XYZ();
obj.myMethod();
}
}
Çıktı
Geçersiz Kılma Yöntemi
Çözüm
Java'daki polimorfizm kavramı, Nesne yönelimli programlamadaki en kullanışlı özelliklerden biridir. Ayrıca, hem statik hem de çalışma zamanında bir yöntemi çağırma yeteneği, uygulanabilirliğini genişletir.
Polimorfizm kavramını getirmenin arkasındaki fikir esnekliktir. Ayrıca, çok sayıda nesneyi tek bir referans değişkeninde işleme yeteneği, kodlamayı biraz daha kolaylaştırır. Bu nedenle konsept, günlük kodlama görevlerinde kullanılmalı ve etkinliğini benimsemelidir.
Yazılım teknolojisi, gelişimi ve arkasındaki mekanizma hakkında daha fazla bilgi edinmek istiyorsanız, upGrad tarafından sunulan Yazılım Geliştirmede Yönetici PG Programı – Tam Yığın Geliştirmede Uzmanlaşma kursunu inceleyebilirsiniz. Uzmanlık kursu, pratik becerilerinizi geliştirmek için bilginizi ve mevcut araçları ve programlama dilini artırmak için 300'den fazla vaka çalışması sunan 23 haftalık bir çevrimiçi programdır. Kursla ilgili başka sorularınız varsa, bize bir mesaj bırakın. Ekibimiz sizinle iletişime geçecektir.