Διασύνδεση σε Java με Παράδειγμα

Τι είναι το Interface στην Java;

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

Σύνταξη για δήλωση διεπαφής

Για να χρησιμοποιήσετε μια διασύνδεση στην τάξη σας, προσθέστε τη λέξη-κλειδί «υλοποιεί» μετά το όνομα της τάξης σας ακολουθούμενη από το όνομα της διεπαφής.

interface {
//methods
}

Παράδειγμα υλοποίησης διεπαφής

Τώρα, ας κατανοήσουμε τη διεπαφή σε Java με παράδειγμα:

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Πατήστε εδώ εάν το βίντεο δεν είναι προσβάσιμο

Γιατί απαιτείται διεπαφή;

Για να κατανοήσετε καλύτερα τη χρήση της διεπαφής σε Java, ας δούμε ένα παράδειγμα διεπαφής Java. Η κλάση "Media Player" έχει δύο υποκατηγορίες: CD player και DVD player. Καθένα έχει τη μοναδική του εφαρμογή διεπαφής στη μέθοδο Java για αναπαραγωγή μουσικής.

Γιατί απαιτείται διεπαφή

Μια άλλη κατηγορία "Combo drive" κληρονομεί και CD και DVD (δείτε την εικόνα παρακάτω). Ποια μέθοδο παιχνιδιού πρέπει να κληρονομήσει; Αυτό μπορεί να προκαλέσει σοβαρά προβλήματα σχεδιασμού. Και ως εκ τούτου, η Java δεν επιτρέπει πολλαπλές κληρονομία.

Γιατί απαιτείται διεπαφή

Τώρα ας πάρουμε ένα άλλο παράδειγμα του Dog.

Ας υποθέσουμε ότι έχετε μια απαίτηση όπου η κατηγορία «σκύλος» κληρονομεί την κατηγορία «ζώο» και «κατοικίδιο» (βλ. εικόνα παρακάτω). Αλλά δεν μπορείτε να επεκτείνετε δύο κλάσεις στην Java. Τι θα κάνατε λοιπόν; Η λύση είναι το Interface.

Γιατί απαιτείται διεπαφή

Το βιβλίο κανόνων για τη διεπαφή λέει,

  • Μια διεπαφή εφαρμογής Java είναι 100% αφηρημένη κατηγορία και έχει μόνο αφηρημένες μεθόδους.
  • Η τάξη μπορεί να υλοποιήσει οποιονδήποτε αριθμό διεπαφών.

Το Class Dog μπορεί να επεκταθεί στην κατηγορία "Animal" και να εφαρμόσει τη διεπαφή ως "Pet".

Γιατί απαιτείται διεπαφή

Παράδειγμα διεπαφής Java:

Ας κατανοήσουμε το παρακάτω πρόγραμμα διεπαφής σε Java:

Βήμα 1) Αντιγράψτε το following κώδικα σε έναν επεξεργαστή.

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 και την Abstract Class;

  • Χρησιμοποιήστε μια αφηρημένη κλάση όταν πρέπει να οριστεί ένα πρότυπο για μια ομάδα υποκλάσεων
  • Χρησιμοποιήστε μια διεπαφή όταν πρέπει να οριστεί ένας ρόλος για άλλες κλάσεις, ανεξάρτητα από το δέντρο κληρονομικότητας αυτών των κλάσεων

Πρέπει να γνωρίζετε στοιχεία για το Interface

  • Μια κλάση Java μπορεί να υλοποιήσει πολλαπλές διεπαφές Java. Είναι απαραίτητο η κλάση να εφαρμόσει όλες τις μεθόδους που δηλώνονται στις διεπαφές.
  • Η κλάση πρέπει να παρακάμπτει όλες τις αφηρημένες μεθόδους που δηλώνονται στη διεπαφή
  • Η διεπαφή επιτρέπει την αποστολή μηνύματος σε ένα αντικείμενο χωρίς να αφορά σε ποιες κλάσεις ανήκει.
  • Η κλάση πρέπει να παρέχει λειτουργικότητα για τις μεθόδους που δηλώνονται στη διεπαφή.
  • Όλες οι μέθοδοι σε μια διεπαφή είναι έμμεσα δημόσιες και αφηρημένες
  • Δεν είναι δυνατή η δημιουργία μιας διεπαφής
  • Μια αναφορά διασύνδεσης μπορεί να οδηγεί σε αντικείμενα των κλάσεων υλοποίησης της
  • Μια διεπαφή μπορεί να εκτείνεται από μία ή πολλές διεπαφές. Η κλάση μπορεί να επεκτείνει μόνο μία κλάση αλλά να εφαρμόσει οποιονδήποτε αριθμό διεπαφών
  • Μια διεπαφή δεν μπορεί να εφαρμόσει άλλη διεπαφή. Πρέπει να επεκτείνει άλλη διεπαφή εάν χρειάζεται.
  • Μια διεπαφή που δηλώνεται μέσα σε μια άλλη διεπαφή αναφέρεται ως ένθετη διεπαφή
  • Κατά τη στιγμή της δήλωσης, η μεταβλητή διεπαφής πρέπει να αρχικοποιηθεί. Αλλαwise, ο μεταγλωττιστής θα κάνει ένα σφάλμα.
  • Η κλάση δεν μπορεί να εφαρμόσει δύο διεπαφές στη java που έχουν μεθόδους με το ίδιο όνομα αλλά διαφορετικό τύπο επιστροφής.

Περίληψη:

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