Polimorfizm Java (Statik ve Dinamik)
⚡ Akıllı Özet
Polimorfizm Java Bu, tek bir arayüzün birçok formu temsil etmesine olanak tanır, böylece tek bir metot adı ilgili sınıflar arasında farklı davranır. Esnekliği, kodun yeniden kullanımını ve eski bankacılık, tıp ve kurumsal sistemlerin temiz bir şekilde genişletilmesini teşvik eden nesne yönelimli tasarımın temel taşlarından biridir.

Polimorfizm Nedir? Java?
Polimorfizm Java Bir veya daha fazla sınıf veya nesnenin kalıtım yoluyla birbirleriyle ilişkili olması durumunda ortaya çıkar. Bir nesnenin birçok biçim alabilme yeteneğidir. Kalıtım, kullanıcıların nitelikleri ve yöntemleri miras almasına olanak tanır ve polimorfizm bu yöntemleri farklı görevleri yerine getirmek için kullanır. Amaç iletişimdir, ancak yaklaşım farklılık gösterebilir.
Örneğin, iletişim için akıllı telefon kullanılır. İletişim şekli arama, kısa mesaj, resimli mesaj veya e-posta olabilir. Amaç ortaktır, yani iletişimdir, ancak yaklaşım farklıdır. Bu davranış, iletişimin özünü oluşturur. PolimorfizmŞimdi Polimorfizmi öğreneceğiz. Java Örnek kodlar, diyagramlar ve adım adım açıklamalarla birlikte.
Tıkla okuyun videoya erişilemiyorsa
Polimorfizmi Neden Kullanırız? Java?
Polimorfizm Java Bu yöntem, kodu esnek, yeniden kullanılabilir ve bakımı daha kolay hale getirdiği için kullanılır. Bir üst türün tek bir referans değişkeni, birden fazla alt nesneye işaret edebilir, bu nedenle aynı çağrı, sağlanan alt sınıfa göre uyarlanır. Bu model, test edilmiş kodun dokunulmadan kalmasını sağlarken, yeni davranışlar özel alt sınıflar aracılığıyla eklenir; bu da Spring ve Jakarta EE gibi çerçevelerin bu yönteme bağlı olmasının tam nedenidir.
Java Örnekle OOP'larda Polimorfizm
Örneğin, bir üst sınıfı ele alalım. Hesap Para yatırma ve çekme fonksiyonlarına sahip. Account sınıfının iki alt sınıfı vardır. Para yatırma ve çekme işlemleri tasarruf ve vadesiz hesaplar için aynıdır, bu nedenle Account sınıfından miras alınan yöntemler çalışacaktır.
Java Polimorfizm Örneği
Yazılım Gereksinimindeki Değişiklik
Yazılım sektöründe sıkça rastlanan bir durum olan, gereksinim şartnamesinde bir değişiklik var. Ayrıcalıklı bir banka hesabına, hesap bakiyesinden daha fazla para çekme olanağı sağlayan bir ek fonksiyon eklenmesi gerekiyor. Ayrıcalıklı hesap için para çekme yönteminin yeniden uygulanması gerekirken, tasarruf ve vadesiz hesaplardaki test edilmiş kodlar olduğu gibi bırakılıyor. Bu izolasyonun avantajı da burada yatıyor. OOPS.
) 1 Adım Tasarruf hesabının para çekme yöntemi çağrıldığında, üst sınıf olan Hesap sınıfında tanımlanan yöntem yürütülür.
) 2 Adım Ayrıcalıklı hesap (kredili mevduat hesabı) için para çekme yöntemi çağrıldığında, ayrıcalıklı sınıfta tanımlanan para çekme yöntemi yürütülür. Bu dağıtım şöyledir: Nesne Yönelimli Programlamada Polimorfizm.
Yöntem Geçersiz Kılma Java
Metot geçersiz kılma, bir alt sınıfta üst sınıfa ait bir metodu yeniden tanımlama işlemidir. Alt sınıf aynı yapıyı korur.tracAncak, program çalıştırıldığında seçilen yeni bir uygulama sunar.
Yöntemi Geçersiz Kılma Kuralları
- Metot imzası, yani metot adı, parametre listesi ve dönüş tipi, birebir aynı olmalıdır.
- Geçersiz kılınan metot erişilebilirliği genişletebilir, ancak daraltamaz. Eğer metot temel sınıfta özel (private) ise, alt sınıf onu genel (public) yapabilir, ancak tersi mümkün değildir.
Örnek E-posta
class Doctor{ public void treatPatient(){ // treatPatient method } class Surgeon extends Doctor{ public void treatPatient(){ // treatPatient method } } class Run{ public static void main (String args[]){ Doctor doctorObj = new Doctor(); // treatPatient method in class Doctor will be executed doctorObj.treatPatient(); Surgeon surgeonObj = new Surgeon(); // treatPatient method in class Surgeon will be executed surgeonObj.treatPatient(); } }
Metot Aşırı Yüklemesi ve Metot Geçersiz Kılma Arasındaki Fark
Metot aşırı yüklemesi, aynı sınıf içinde aynı metot adına sahip ancak farklı imzalara sahip metotlarda gerçekleşir. Metot geçersiz kılma ise üst sınıf-alt sınıf ilişkisinde gerçekleşir; burada alt sınıf, üst sınıfta tanımlanmış bir metodu yeniden tanımlar.
| Metot aşırı yüklemesi, aynı sınıfta birden fazla metodun aynı isme sahip ancak farklı imzalara sahip olmasıdır. | Metot geçersiz kılma, üst sınıftaki metotlardan birinin alt sınıfta yeniden tanımlanmasıdır. Bu durumda, metodun imzası aynı kalır. |
Ex:
void sum (int a , int b); void sum (int a , int b, int c); void sum (float a, double b); |
Ex:
class X{ public int sum(){ // some code } } class Y extends X{ public int sum(){ //overridden method //signature is same } } |
Dinamik Polimorfizm Nedir?
Nesne yönelimli programlamada dinamik polimorfizm, üst sınıfta ve alt sınıfta aynı isim ve imzaya sahip birden fazla metodun tanımlanabilmesini sağlayan mekanizmadır. Geçersiz kılınan bir metoda yapılan çağrı, JVM içindeki dinamik bağlama yoluyla çalışma zamanında çözümlenir.
Dinamik Polimorfizm Örneği
Üst sınıfa ait bir referans değişkeni, alt sınıfa ait bir nesneye referans verebilir:
Doctor obj = new Surgeon();
Şu ifadeyi ele alalım:
obj.treatPatient();
Burada referans değişkeni obj Şekilde gösterildiği gibi, bu fonksiyon üst sınıfa aitken, işaret ettiği nesne alt sınıfa aittir.
Arama obj.treatPatient() Bu, Surgeon alt sınıfının treatPatient() yöntemini çalıştıracaktır. Bir yöntemi çağırmak için temel sınıf referansı kullanıldığında, çağrılacak yöntem, referansın işaret ettiği gerçek nesneye göre JVM tarafından belirlenir. obj Bu, Doktor'a bir göndermedir; Cerrah nesnesine işaret ettiği için Cerrah yöntemini çağırır. Karar çalışma zamanında verilir, bu yüzden bu şekilde adlandırılır. Dinamik Polimorfizm veya çalışma zamanı polimorfizmi.
Statik ve Dinamik Polimorfizm Arasındaki Fark
Statik Polimorfizm Java Geleneksel polimorfizm, bir metodu çağırmak için gereken bilgileri derleme zamanında toplayan bir polimorfizm türüdür; dinamik polimorfizm ise bir metodu çağırmak için gereken bilgileri çalışma zamanında toplayan bir polimorfizm türüdür.
| Bu, Metot Aşırı Yüklemesi ile ilgilidir. | Bu, Metot Geçersiz Kılma ile ilgilidir. |
| Varsa hatalar derleme sırasında çözülür. Kod derleme sırasında çalıştırılmadığı için adı statiktir.
Ex: void sum (int a , int b); void sum (float a, double b); int sum (int a, int b); //compiler gives error. |
Bir referans değişkeni geçersiz kılınmış bir metodu çağırdığında, çağrılacak metot, referans değişkeninin işaret ettiği nesne tarafından belirlenir. Bu, yalnızca kod çalıştırılırken, yani çalışma zamanında belirlenebilir; bu nedenle adı dinamiktir.
Ex: //reference of parent pointing to child object Doctor obj = new Surgeon(); // method of child called obj.treatPatient(); |
Süper Anahtar Kelime Java
Peki ya Surgeon sınıfındaki treatPatient metodu, Doctor sınıfında tanımlanan işlevselliği yürütmek ve ardından kendi özel davranışını gerçekleştirmek isterse? Bu durumda anahtar kelime super alt sınıftan ana sınıfın yöntemlerine erişmek için kullanılabilir. Surgeon sınıfındaki treatPatient yöntemi şu şekilde yazılabilir:
treatPatient(){
super.treatPatient();
//add code specific to Surgeon
}
`super` anahtar kelimesi, alt sınıf içinde üst sınıfın herhangi bir veri üyesine veya yöntemine erişmek için kullanılabilir. Bir sonraki bölümde `super` anahtar kelimesi hakkında bilgi edineceğiz. mirasve Polimorfizm Java Örnek programlarla.
Örnek: Kalıtımı, Polimorfizmi ve `super` anahtar kelimesini öğrenmek için.
) 1 Adım Aşağıdaki kodu bir editöre kopyalayın.
public class Test{ public static void main(String args[]){ X x= new X(); Y y = new Y(); y.m2(); //x.m1(); //y.m1(); //x = y;// parent pointing to object of child //x.m1() ; //y.a=10; } } class X{ private int a; int b; public void m1(){ System.out.println("This is method m1 of class X"); } } class Y extends X{ int c; // new instance variable of class Y public void m1(){ // overridden method System.out.println("This is method m1 of class Y"); } public void m2(){ super.m1(); System.out.println("This is method m2 of class Y"); } }
) 2 Adım Kodu kaydedin, derleyin ve çalıştırın. Çıktıyı gözlemleyin.
) 3 Adım 6 ila 9. satırlardaki yorum satırlarını kaldırın. Kodu kaydedin, derleyin ve çalıştırın. Çıktıyı inceleyin.
) 4 Adım 10. satırdaki yorum satırını kaldırın. Kodu kaydedin ve derleyin.
) 5 Adım Hata = ? Bunun nedeni, alt sınıfın üst sınıfın özel üyelerine erişememesidir.





