Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ εκτείνεται και υλοποιεί λέξεις-κλειδιά σε Java

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

Διαγράμματα σύγκρισης

Βάση σύγκρισηςΕπεκτείνειΕφαρμόζει
ΒασικόςΗ επεκτατική λέξη χρησιμοποιείται για να δημιουργήσει μια υποκατηγορία χρησιμοποιώντας τα χαρακτηριστικά μιας σούπερ κλάσης.Η λέξη-κλειδί implements χρησιμοποιείται για την υλοποίηση διεπαφής
ΜέθοδοιΗ επεκταθείσα λέξη-κλειδί δεν μπορεί να παρακάμψει όλες τις μεθόδους μιας σούπερ κλάσης.Η λέξη-κλειδί implements πρέπει να εφαρμόσει όλες τις μεθόδους μιας υλοποιημένης διεπαφής.
ΤάξηΜια τάξη μπορεί να επεκτείνει μόνο μία σούπερ τάξη.Μια κλάση μπορεί να εφαρμόσει πολλαπλές αλληλεπιδράσεις.
ΔιεπαφήΜια διεπαφή μπορεί να επεκτείνει περισσότερες από μία διεπαφές.Μια διεπαφή δεν μπορεί να εφαρμόσει άλλη διεπαφή.

Ορισμός της επέκτασης λέξης-κλειδιού

Η κληρονομικότητα είναι μια σημαντική έννοια στον αντικειμενοστραφή προγραμματισμό, επιτυγχάνεται όταν μια υποκατηγορία επεκτείνει μια άλλη υπερκλάση. Μια υποκατηγορία επιτρέπεται να επεκτείνει μόνο μία υπερκλάση. Μια τάξη δεν μπορεί ποτέ να επεκτείνει περισσότερες από μία σούπερ τάξεις στην Java. Όταν μια κλάση επεκτείνει μια άλλη κλάση, μπορεί να παρακάμψει τις μεθόδους που ορίζονται σε μια κλάση. Ας καταλάβουμε ότι η λέξη-κλειδί επεκτείνεται με τη βοήθεια ενός παραδείγματος.

 τάξη Α {String s; A (συμβολοσειρά s1) {s = s1; } // εμφάνιση κενής οθόνης () {System.out.println (+ s); }} κλάση Β εκτείνεται A {String i; B (συμβολοσειρά s1, String i1) {super (s1); i = i1. } void dispaly () {super.dispaly (); / * εμφάνιση () της κλάσης Α που επικαλείται. * / System.out.println (+ i); }} τάξη Παράκαμψη {δημόσια static κενό κύρια (String args []) {B ob = νέα B (Tech, διαφορές)? ob.display (); / * εμφάνιση της κλάσης Β που επικαλείται * /}} / * out put * / Tech Differences 

Στον παραπάνω κώδικα μπορείτε να παρατηρήσετε ότι η κλάση Β έχει διευρυμένη κλάση Α και έχει αντικαταστήσει την εμφάνιση μεθόδου () που ορίζεται στην κλάση Α. Με παρόμοιο τρόπο μια διεπαφή μπορεί να επεκτείνει περισσότερες από μία διεπαφές κάθε φορά. Δεδομένου ότι η διεπαφή δεν χρειάζεται να εφαρμόσει οποιαδήποτε μέθοδο της εκτεταμένης διεπαφής, επομένως, επιτρέπεται να κληρονομήσει πολλαπλές διεπαφές κάθε φορά.

Ορισμός των λέξεων-κλειδιών implements

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

 αλληλουχίες διεπαφής {κενό εμφάνιση (string s); } integer interface {άκυρη εμφάνιση (int i); } class Demo υλοποιεί συμβολοσειρά, integer {void show (int i) {System.Out.Println ("ακέραιος αριθμός:" + i); } κενό εμφάνιση (Strings s) {System.Out.Println ("τιμή συμβολοσειράς:" + s)? }} τάξη Demo_main {δημόσιο static κενό κύρια (string args []) {Demo d = νέα επίδειξη (); d.display ("TechDifferences"). d.show (2). }} / * εξόδου * / TechDifferences 2 

Όπως και στον παραπάνω κώδικα μπορείτε να δείτε ότι το demo κλάσης υλοποιεί δύο σειρές διεπαφών και ακέραιους αριθμούς και έχει εφαρμόσει τις μεθόδους που δηλώνονται τόσο στις διεπαφές που είναι display () και show ().

Βασικές διαφορές μεταξύ των επεκτάσεων και των εργαλείων

  1. Μια κλάση μπορεί να κληρονομήσει μια άλλη κλάση ή μια διεπαφή κληρονομεί άλλες διεπαφές χρησιμοποιώντας μια λέξη-κλειδί επεκτείνεται, ενώ μια τάξη μπορεί να εφαρμόσει διεπαφές χρησιμοποιώντας μια λέξη-κλειδί υλοποιεί.
  2. Μια υποκατηγορία που επεκτείνει μια υποκατηγορία μπορεί ή όχι να παρακάμψει όλες τις μεθόδους σε μια υπερκλάση. Από την άλλη πλευρά, μια τάξη που εφαρμόζει μια διεπαφή πρέπει να καθορίσει / εφαρμόσει όλες τις μεθόδους αυτής της διασύνδεσης.
  3. Μια κλάση μπορεί να υλοποιήσει οποιονδήποτε αριθμό μιας διεπαφής ταυτόχρονα. Από την άλλη πλευρά, μια τάξη μπορεί να επεκτείνει μόνο μία σούπερ τάξη.
  4. Μια διασύνδεση μπορεί να επεκτείνει οποιοδήποτε αριθμό διεπαφών, αλλά μια διεπαφή δεν μπορεί ποτέ να εφαρμόσει οποιαδήποτε άλλη διεπαφή ως μέσο υλοποίησης που καθορίζει τις μεθόδους και η διεπαφή έχει πάντα αφηρημένες μεθόδους, έτσι ώστε μια διεπαφή δεν μπορεί ποτέ να εφαρμόσει άλλη διεπαφή.

Συμπέρασμα:

Τελειώνω τη συζήτηση λέγοντας ότι η εφαρμογή ενός διεπαφή καθιστά τον κώδικα πιο ευέλικτο από την επέκταση μιας κλάσης. Καθώς αποφεύγει τον περιορισμό της κληρονομιάς μόνο μιας κλάσης super στην Java. Χρησιμοποιώντας λέξεις-κλειδιά εργαλείων, μια κλάση μπορεί να κληρονομήσει χαρακτηριστικά περισσότερων από μία διεπαφών.

Top