Τι είναι η διασύνδεση στην Java;
Μια διεπαφή στον προγραμματισμό Java ορίζεται ως ένας αφηρημένος τύπος που χρησιμοποιείται για τον προσδιορισμό της συμπεριφοράς μιας κλάσης. Μια διεπαφή Java περιέχει στατικές σταθερές και αφηρημένες μεθόδους. Μια τάξη μπορεί να εφαρμόσει πολλαπλές διεπαφές. Στην Java, οι διεπαφές δηλώνονται χρησιμοποιώντας τη λέξη-κλειδί διεπαφής. Όλες οι μέθοδοι στη διεπαφή είναι σιωπηρά δημόσιες και αφηρημένες.
Σύνταξη για δήλωση διασύνδεσης
interface {//methods}
Για να χρησιμοποιήσετε μια διεπαφή στην τάξη σας, προσθέστε τη λέξη-κλειδί "υλοποιεί" μετά το όνομα της τάξης σας ακολουθούμενο από το όνομα της διεπαφής.
Παράδειγμα υλοποίησης διεπαφής
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Κάντε κλικ εδώ εάν το βίντεο δεν είναι προσβάσιμο
Γιατί απαιτείται διασύνδεση;
Για να κατανοήσετε καλύτερα την έννοια του Java Interface, ας δούμε ένα παράδειγμα. Η τάξη "Media Player" έχει δύο υποκατηγορίες: CD player και DVD player. Ο καθένας έχει τη μοναδική του μέθοδο εφαρμογής για να παίζει μουσική.
Μια άλλη τάξη "Combo drive" κληρονομεί τόσο CD όσο και DVD (δείτε την παρακάτω εικόνα). Ποια μέθοδος παιχνιδιού πρέπει να κληρονομήσει; Αυτό μπορεί να προκαλέσει σοβαρά προβλήματα σχεδιασμού. Και ως εκ τούτου, η Java δεν επιτρέπει πολλαπλή κληρονομιά.
Τώρα ας πάρουμε ένα άλλο παράδειγμα του σκύλου.
Ας υποθέσουμε ότι έχετε μια απαίτηση όπου η κατηγορία "σκύλος" κληρονομεί την κατηγορία "ζώο" και "κατοικίδιο ζώο" (δείτε την εικόνα παρακάτω). Αλλά δεν μπορείτε να επεκτείνετε δύο τάξεις στην Java. Τι θα έκανες λοιπόν; Η λύση είναι Interface.
Το βιβλίο κανόνων για τη διεπαφή λέει,
- Μια διεπαφή είναι 100% αφηρημένη τάξη και έχει μόνο αφηρημένες μεθόδους.
- Η κλάση μπορεί να εφαρμόσει οποιονδήποτε αριθμό διεπαφών.
Το Class Dog μπορεί να επεκταθεί στην κατηγορία "Animal" και να εφαρμόσει διεπαφή ως "Pet".
Παράδειγμα διασύνδεσης Java:
Βήμα 1) Αντιγράψτε τον ακόλουθο κώδικα σε πρόγραμμα επεξεργασίας.
διασύνδεση Pet {δημόσια άκυρη δοκιμή ();}η κατηγορία Dog εφαρμόζει κατοικίδιο ζώο {δημόσιο άκυρο τεστ () {System.out.println ("Εφαρμόστηκε μέθοδος διεπαφής");}δημόσιος στατικός κενός κενός (String args []) {Pet p = νέο σκυλί ();p.test ();}}
Βήμα 2) Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα. Παρατηρήστε την έξοδο.
Διαφορά μεταξύ κλάσης και διασύνδεσης
Τάξη | Διεπαφή |
---|---|
Στην τάξη, μπορείτε να δημιουργήσετε μια μεταβλητή και να δημιουργήσετε ένα αντικείμενο. | Σε μια διεπαφή, δεν μπορείτε να δημιουργήσετε μια μεταβλητή και να δημιουργήσετε ένα αντικείμενο. |
Η τάξη μπορεί να περιέχει συγκεκριμένες μεθόδους (με εφαρμογή) | Η διεπαφή δεν μπορεί να περιέχει συγκεκριμένες μεθόδους (με εφαρμογή) |
Οι προσδιοριστές πρόσβασης που χρησιμοποιούνται με τάξεις είναι ιδιωτικοί, προστατευμένοι και δημόσιοι. |
Στη διεπαφή χρησιμοποιείται μόνο ένας προσδιοριστής - Δημόσιο. |
Πότε να χρησιμοποιήσετε το Interface και το Abstract Class;
- Χρησιμοποιήστε μια αφηρημένη κλάση όταν ένα πρότυπο πρέπει να οριστεί για μια ομάδα υποκατηγοριών
- Χρησιμοποιήστε μια διεπαφή όταν πρέπει να καθοριστεί ένας ρόλος για άλλες κατηγορίες, ανεξάρτητα από το δέντρο κληρονομιάς αυτών των τάξεων
Πρέπει να γνωρίζετε γεγονότα σχετικά με τη διασύνδεση
- Μια κλάση Java μπορεί να εφαρμόσει πολλές διεπαφές Java. Είναι απαραίτητο η κλάση να εφαρμόζει όλες τις μεθόδους που δηλώνονται στις διεπαφές.
- Η κλάση πρέπει να παρακάμψει όλες τις αφηρημένες μεθόδους που δηλώνονται στη διεπαφή
- Η διεπαφή επιτρέπει την αποστολή μηνύματος σε ένα αντικείμενο χωρίς να αφορά σε ποιες κλάσεις ανήκει.
- Η τάξη πρέπει να παρέχει λειτουργικότητα για τις μεθόδους που δηλώνονται στη διεπαφή.
- Όλες οι μέθοδοι σε μια διεπαφή είναι σιωπηρά δημόσιες και αφηρημένες
- Δεν είναι δυνατή η δημιουργία διεπαφής
- Μια αναφορά διεπαφής μπορεί να δείχνει σε αντικείμενα των κλάσεων εφαρμογής της
- Μια διεπαφή μπορεί να επεκταθεί από μία ή πολλές διεπαφές. Η κλάση μπορεί να επεκτείνει μόνο μία κλάση αλλά να εφαρμόσει οποιονδήποτε αριθμό διεπαφών
- Μια διεπαφή δεν μπορεί να εφαρμόσει άλλη διεπαφή. Πρέπει να επεκτείνει μια άλλη διεπαφή εάν χρειαστεί.
- Μια διεπαφή που δηλώνεται μέσα σε μια άλλη διεπαφή αναφέρεται ως ένθετη διεπαφή
- Κατά τη στιγμή της δήλωσης, η μεταβλητή διεπαφής πρέπει να αρχικοποιηθεί. Διαφορετικά, ο μεταγλωττιστής θα εμφανίσει σφάλμα.
- Η κλάση δεν μπορεί να εφαρμόσει δύο διεπαφές σε Java που έχουν μεθόδους με το ίδιο όνομα αλλά διαφορετικό τύπο επιστροφής.
Περίληψη :
- Η κλάση που εφαρμόζει τη διεπαφή πρέπει να παρέχει λειτουργικότητα για τις μεθόδους που δηλώνονται στη διεπαφή
- Όλες οι μέθοδοι σε μια διεπαφή είναι σιωπηρά δημόσιες και αφηρημένες
- Δεν είναι δυνατή η δημιουργία διεπαφής
- Μια αναφορά διεπαφής μπορεί να δείχνει σε αντικείμενα των κλάσεων εφαρμογής της
- Μια διεπαφή μπορεί να επεκταθεί από μία ή πολλές διεπαφές. Μια κλάση μπορεί να επεκτείνει μόνο μία κλάση αλλά να εφαρμόσει οποιονδήποτε αριθμό διεπαφών