Πώς να χρησιμοποιήσετε το Dynamic Binding στην Java;

Pos Na Chresimopoiesete To Dynamic Binding Sten Java



Ο ' δυναμικό δέσιμο » επιτρέπει την πολυμορφική συμπεριφορά, όπου η επίκληση της μεθόδου ενός αντικειμένου προσδιορίζεται κατά το χρόνο εκτέλεσης με βάση τον πραγματικό τύπο του αντικειμένου και όχι τον τύπο αναφοράς. Προωθεί την επαναχρησιμοποίηση κώδικα επιτρέποντας στις υποκλάσεις να παρακάμπτουν και να παρέχουν την εφαρμογή μεθόδων που ορίζονται στη μητρική κλάση.

Αυτό το ιστολόγιο δείχνει τη χρήση και την εφαρμογή της δυναμικής σύνδεσης σε Java.

Πώς να χρησιμοποιήσετε το Dynamic Binding στην Java;

Η δυναμική σύνδεση επιτρέπει τη χαλαρή σύζευξη μεταξύ αντικειμένων. Βοηθά στην εύκολη επέκταση της λειτουργικότητας προσθέτοντας νέες υποκλάσεις που παρακάμπτουν μεθόδους χωρίς να τροποποιούν τον υπάρχοντα κώδικα. Η δυναμική δέσμευση χρησιμοποιείται ευρέως για συστήματα αποστολής χρόνου εκτέλεσης, χειρισμού συμβάντων ή προσθηκών.







Ας δούμε μερικά παραδείγματα για μια λεπτομερή εξήγηση:



Παράδειγμα 1: Εφαρμογή Dynamic Binding



Χρησιμοποιώντας δυναμική σύνδεση, οι προγραμματιστές μπορούν να επιτρέψουν στους χρήστες να προσαρμόσουν και να παρακάμψουν τις προεπιλεγμένες συμπεριφορές για τη δημιουργία προσαρμόσιμων εφαρμογών. Για πρακτική εφαρμογή, ας δούμε ένα παράδειγμα:





Εισαγωγή java.util.Arrays;
εισαγωγή java.util.HashSet;
εισαγωγή java.util.List;
εισαγωγή java.util.Set;

δημόσια τάξη DynBind {
δημόσιο στατικό κενό κύριο ( Σειρά [ ] args ) {
Παιχνίδι τυχερού παιχνιδιού Τύπος 1 = νέο Κρίκετ ( ) ;
Game GameType2 = νέο CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
τάξη Παιχνίδι {
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Φυσικά ή εικονικά παιχνίδια' ) ;
}
}
κλάση Κρίκετ επεκτείνει το παιχνίδι {
@ Καταπατώ
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το κρίκετ είναι ένα σωματικό παιχνίδι' ) ;
}
}
Η κλάση CallofDuty επεκτείνει το Gaming {
@ Καταπατώ
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το CallofDuty είναι ένα εικονικό παιχνίδι' ) ;
}
}

Επεξήγηση του παραπάνω κώδικα:



  • Πρώτον, η τάξη ' DynBind ' δημιουργείται και δύο αντικείμενα τύπου ' Παιχνίδι », δηλώνονται.
  • Στη συνέχεια, αυτά τα αντικείμενα αρχικοποιούνται με νέα ' Κρίκετ ' και ' CallofDuty ' αντικείμενα, αυτή η αρχικοποίηση δείχνει τη δυναμική σύνδεση. Ο τύπος αναφοράς είναι ' Παιχνίδι ' αλλά οι πραγματικοί τύποι αντικειμένων είναι ' Κρίκετ ' και ' CallofDuty », αντίστοιχα.
  • Τώρα, αυτά τα αντικείμενα χρησιμοποιούνται για την επίκληση του ' Τύπος παιχνιδιού() ” λειτουργεί παρακάμπτοντας τη συνάρτηση στις παιδικές τάξεις.
  • Στη συνέχεια, ο γονιός» Παιχνίδι Η κλάση ' δηλώνεται η οποία δημιουργεί και αρχικοποιεί το ' Τύπος παιχνιδιού() », η οποία εκτυπώνει ένα εικονικό μήνυμα κειμένου.
  • Στη συνέχεια, δημιουργούνται δύο τάξεις παιδιών με το όνομα « Κρίκετ ' και ' CallofDuty '. Αυτές οι κλάσεις κληρονομούνται από τον γονέα ' Παιχνίδι ” τάξη.
  • Μετά από αυτό, το « @Καταπατώ 'Ο σχολιασμός χρησιμοποιείται για την παράκαμψη του γονέα' Παιχνίδι 'Μέθοδοι κλάσης με όνομα' Τύπος παιχνιδιού() '.
  • Στο τέλος, εμφανίζεται ένα διαφορετικό εικονικό μήνυμα και στις δύο μεθόδους παράκαμψης θυγατρικής κλάσης.

Μετά το τέλος της φάσης εκτέλεσης:

Η έξοδος δείχνει ότι τα εικονικά μηνύματα των θυγατρικών κατηγοριών εμφανίζονται στην κονσόλα χρησιμοποιώντας δυναμική δέσμευση.

Παράδειγμα 2: Εφαρμογή Πολυεπίπεδης Κληρονομιάς

Η δυναμική δέσμευση μπορεί επίσης να εφαρμοστεί για τη δημιουργία πολυεπίπεδης κληρονομικότητας. Δύο μπλοκ κώδικα του ίδιου προγράμματος όπως φαίνεται παρακάτω:

τάξη Παιχνίδι {
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Φυσικά ή εικονικά παιχνίδια' ) ;
}
}
κλάση Κρίκετ επεκτείνει το παιχνίδι {
@ Καταπατώ
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το κρίκετ είναι ένα σωματικό παιχνίδι' ) ;
}
δημόσιο κενό playingFormat ( ) {
System.out.println ( 'Το κρίκετ έχει διαφορετικές μορφές παιχνιδιού' ) ;
}
}
Η κλάση CallofDuty επεκτείνει το Gaming {
@ Καταπατώ
Τύπος παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το CallofDuty είναι ένα εικονικό παιχνίδι' ) ;
}
Λειτουργία παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το CallofDuty έχει πολλαπλούς τρόπους παιχνιδιού' ) ;
}
}
Η κλάση CricketGame επεκτείνει το Κρίκετ {
Λειτουργία παιχνιδιού δημόσιου κενού ( ) {
System.out.println ( 'Το κρίκετ έχει έναν τρόπο παιχνιδιού' ) ;
}
}
Η κλάση CallofDutyGame επεκτείνει το CallofDuty {
}

Επεξήγηση του παραπάνω κώδικα:

  • Πρώτον, ο γονιός» Παιχνίδι Δημιουργείται η κλάση και περιλαμβάνει το Τύπος παιχνιδιού() ' λειτουργία που περιέχει ένα εικονικό μήνυμα.
  • Στη συνέχεια, δύο τάξεις παιδιών με το όνομα « Κρίκετ ' και ' CallofDuty ' δημιουργούνται, παρακάμπτοντας και τα δύο τη συνάρτηση γονικής κλάσης με το όνομα ' Τύπος παιχνιδιού() '.
  • Αυτές οι κλάσεις περιέχουν μια επιπλέον συνάρτηση με το όνομα ' playingFormat() ' και ' λειτουργία παιχνιδιού() » λειτουργίες, αντίστοιχα.
  • Στη συνέχεια, δημιουργήστε ένα παιδί πολλαπλών επιπέδων με το όνομα ' Παιχνίδι κρίκετ «που παρατείνεται από το παιδί» Κρίκετ ” τάξη. Περιέχει το « λειτουργία παιχνιδιού() 'συνάρτηση που παρακάμπτεται από τη μητρική της' Κρίκετ ” τάξη.
  • Μετά από αυτό, το « CallofDutyGame Η τάξη δημιουργείται ως παιδί για το CallofDuty ” τάξη. Δημιουργεί μια πολυεπίπεδη κληρονομικότητα και για να ενεργοποιήσει τη λειτουργικότητα της δυναμικής δέσμευσης.

Τώρα, εισάγετε το ' κύριος() 'μέθοδος:

δημόσια τάξη DynBind {
δημόσιο στατικό κενό κύριο ( Σειρά [ ] args ) {
CallofDutyGame codg = νέο CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

Παιχνίδι κρίκετ cricg = νέο CricketGame ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Επεξήγηση του παραπάνω κώδικα:

  • Πρώτον, ένα αντικείμενο του « CallofDutyGame Δημιουργείται η κλάση που καλεί τις συναρτήσεις των γονικών κλάσεων της.
  • Με τον ίδιο τρόπο, το « Παιχνίδι κρίκετ Το αντικείμενο δηλώνεται το οποίο καλεί τη συνάρτηση γονικής κλάσης του που είναι διαθέσιμη σε πολλά επίπεδα στην ιεραρχία.

Μετά το τέλος της φάσης εκτέλεσης:

Η έξοδος δείχνει ότι η κληρονομικότητα πολλαπλών επιπέδων δημιουργείται χρησιμοποιώντας δυναμική σύνδεση σε Java.

συμπέρασμα

Στην Java, το ' δυναμικό δέσιμο ” προσφέρει πλεονεκτήματα όπως πολυμορφισμός, επαναχρησιμοποίηση κώδικα, ευελιξία και επεκτασιμότητα. Εφαρμόζεται ακολουθώντας τους κανόνες κληρονομικότητας, παράκαμψης μεθόδου και αναβάθμισης. Η δυναμική δέσμευση επιτρέπει επίσης λειτουργίες χρόνου εκτέλεσης και ενισχύει την ευέλικτη και πολυμορφική συμπεριφορά στην έννοια του OOP. Αυτό αφορά τη χρήση και την υλοποίηση της δυναμικής δέσμευσης στην Java.