Java'da Dinamik Bağlama Nasıl Kullanılır?

Java Da Dinamik Baglama Nasil Kullanilir



dinamik bağlama ”, bir nesnenin yöntem çağrısının çalışma zamanında referans türünden ziyade nesnenin gerçek türüne göre belirlendiği polimorfik davranışa izin verir. Alt sınıfların üst sınıfta tanımlanan yöntemleri geçersiz kılmasına ve uygulamalarını sağlamasına izin vererek kodun yeniden kullanılabilirliğini destekler.

Bu blog, Java'da dinamik bağlamanın kullanımını ve uygulanmasını gösterir.

Java'da Dinamik Bağlama Nasıl Kullanılır?

Dinamik bağlama, nesneler arasında gevşek bağlantı sağlar. Mevcut kodu değiştirmeden yöntemleri geçersiz kılan yeni alt sınıflar ekleyerek işlevselliğin kolayca genişletilmesine yardımcı olur. Dinamik bağlama, çalışma zamanı gönderme, olay işleme veya eklenti sistemleri için yaygın olarak kullanılır.







Ayrıntılı bir açıklama için birkaç örnek üzerinden gidelim:



Örnek 1: Dinamik Bağlamayı Uygulama



Programcılar, dinamik bağlamayı kullanarak, kullanıcıların özelleştirilebilir uygulamalar oluşturmak için varsayılan davranışları özelleştirmesine ve geçersiz kılmasına izin verebilir. Pratik uygulama için, bir örnek üzerinden gidelim:





java.util.Arrays'i içe aktarın;
java.util.HashSet'i içe aktarın;
java.util.List'i içe aktarın;
java.util.Set'i içe aktarın;

genel sınıf DynBind {
genel statik geçersiz ana ( Sicim [ ] argümanlar ) {
Gaming gameType1 = yeni Kriket ( ) ;
Gaming gameType2 = yeni CallofDuty ( ) ;
oyunTürü1.oyunTürü ( ) ;
oyunTürü2.oyunTürü ( ) ;
}
}
sınıf Oyun {
genel geçersiz oyun türü ( ) {
System.out.println ( 'Fiziksel veya Sanal Oyunlar' ) ;
}
}
Cricket sınıfı Oyun alanını genişletiyor {
@ Geçersiz kıl
genel geçersiz oyun türü ( ) {
System.out.println ( 'Kriket Fiziksel Bir Oyundur' ) ;
}
}
sınıf CallofDuty Oyun alanını genişletiyor {
@ Geçersiz kıl
genel geçersiz oyun türü ( ) {
System.out.println ( 'CallofDuty Sanal Bir Oyundur' ) ;
}
}

Yukarıdaki kodun açıklaması:



  • Birincisi, sınıf ' DynBind ” oluşturulur ve “ türünde iki nesne oyun ” beyan edilir.
  • Ardından, bu nesneler yeni ' ile başlatılır. Kriket ' Ve ' Görev çağrısı ” nesneleri, bu başlatma dinamik bağlamayı gösterir. Referans tipi “ oyun ”, ancak gerçek nesne türleri “ Kriket ' Ve ' Görev çağrısı ', sırasıyla.
  • Şimdi, bu nesneler “ çağırmak için kullanılıyor. oyun tipi() ” alt sınıflardaki işlevi geçersiz kılarak çalışır.
  • Daha sonra ebeveyn “ oyun ' sınıfını oluşturan ve başlatan ' sınıfı bildirildi. oyun tipi() Sahte bir metin mesajı yazdıran işlev.
  • Ardından, “adıyla iki alt sınıf oluşturulur. Kriket ' Ve ' Görev çağrısı ”. Bu sınıflar ebeveynden miras alınır ' oyun ' sınıf.
  • Bundan sonra “ @geçersiz kıl ' ek açıklama, üst öğeyi geçersiz kılmak için kullanılır ' oyun 'adlı sınıf yöntemleri' oyun tipi() ”.
  • Sonunda, her iki alt sınıf geçersiz kılma yönteminde farklı bir sahte mesaj görüntülenir.

Yürütme aşamasının bitiminden sonra:

Çıktı, alt sınıfların sahte mesajlarının dinamik bağlama kullanılarak konsolda görüntülendiğini gösterir.

Örnek 2: Çok Düzeyli Kalıtımın Uygulanması

Çok düzeyli kalıtımın oluşturulması için dinamik bağlama da uygulanabilir. Aşağıda gösterildiği gibi aynı programın iki kod bloğu:

sınıf Oyun {
genel geçersiz oyun türü ( ) {
System.out.println ( 'Fiziksel veya Sanal Oyunlar' ) ;
}
}
Cricket sınıfı Oyun alanını genişletiyor {
@ Geçersiz kıl
genel geçersiz oyun türü ( ) {
System.out.println ( 'Kriket Fiziksel Bir Oyundur' ) ;
}
genel geçersiz oynama biçimi ( ) {
System.out.println ( 'Kriket farklı oyun formatlarına sahiptir' ) ;
}
}
sınıf CallofDuty Oyun alanını genişletiyor {
@ Geçersiz kıl
genel geçersiz oyun türü ( ) {
System.out.println ( 'CallofDuty Sanal Bir Oyundur' ) ;
}
genel geçersiz oyun modu ( ) {
System.out.println ( 'CallofDuty'de birden fazla oyun modu var' ) ;
}
}
class CricketGame, Cricket'i genişletir {
genel geçersiz oyun modu ( ) {
System.out.println ( 'Kriket tek oyun moduna sahiptir' ) ;
}
}
sınıf CallofDutyGame, CallofDuty'yi genişletir {
}

Yukarıdaki kodun açıklaması:

  • Birincisi, ebeveyn “ oyun ” sınıfı oluşturulur ve “ oyun tipi() Sahte bir mesaj içeren işlev.
  • Ardından, “ adlı iki alt sınıf Kriket ' Ve ' Görev çağrısı ” her ikisi de “ adlı üst sınıf işlevini geçersiz kılarak oluşturulur. oyun tipi() ”.
  • Bu sınıflar, “adlı fazladan bir işlev içerir. oynamaFormat() ' Ve ' oyun modu() ” işlevleri sırasıyla.
  • Ardından, “ adında çok düzeyli bir çocuk oluşturun. Kriket Oyunu ' çocuk tarafından uzatılan ' Kriket ' sınıf. “ oyun modu() ' ebeveyni tarafından geçersiz kılınan işlev ' Kriket ' sınıf.
  • Bundan sonra “ CallofDutyGame ” sınıfı, “ için bir alt öğe olarak oluşturulur. Görev çağrısı ' sınıf. Çok düzeyli bir kalıtım oluşturur ve dinamik bağlamanın işlevselliğini sağlar.

Şimdi, “ ana() ' yöntem:

genel sınıf DynBind {
genel statik geçersiz ana ( Sicim [ ] argümanlar ) {
CallofDutyGame morina = yeni CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameModu ( ) ;

Kriket Oyunu cıvıl cıvıl = yeni Kriket Oyunu ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameModu ( ) ;
}
}

Yukarıdaki kodun açıklaması:

  • İlk olarak, bir nesne “ CallofDutyGame Ebeveyn sınıflarının işlevlerini çağıran ” sınıfı oluşturulur.
  • Aynı şekilde “ Kriket Oyunu Hiyerarşide çok düzeyli olarak mevcut olan üst sınıf işlevini çağıran ' nesnesi bildirildi.

Yürütme aşamasının bitiminden sonra:

Çıktı, Java'da dinamik bağlama kullanılarak çok düzeyli kalıtımın oluşturulduğunu gösterir.

Çözüm

Java'da “ dinamik bağlama ”, polimorfizm, kodun yeniden kullanılabilirliği, esneklik ve genişletilebilirlik gibi avantajlar sunar. Kalıtım, yöntem geçersiz kılma ve yükseltme kurallarına uyarak uygulanır. Dinamik bağlama aynı zamanda çalışma zamanı işlevlerini etkinleştirir ve OOP konseptinde esnek ve polimorfik davranışı geliştirir. Bu tamamen Java'da dinamik bağlamanın kullanımı ve uygulanması ile ilgilidir.