Διεπαφή σε Java με Παράδειγμα
⚡ Έξυπνη Σύνοψη
Διεπαφή σε Java είναι κοιλιακοίtracΤύπος t που καθορίζει τη συμπεριφορά που πρέπει να υλοποιήσει μια κλάση, που περιέχει σταθερές και abstract μέθοδοι. Αυτός ο πόρος εξηγεί τι είναι μια διεπαφή, γιατί απαιτείται, πώς να δηλώσετε και να υλοποιήσετε μια και πώς οι διεπαφές διαφέρουν από τις κλάσεις και τα abs.tracτάξεις t.

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




