Τι είναι η διασύνδεση;
Η διεπαφή είναι ένα σχεδιάγραμμα που μπορεί να χρησιμοποιηθεί για την εφαρμογή μιας κλάσης. Η διεπαφή δεν περιέχει συγκεκριμένες μεθόδους (μεθόδους που έχουν κώδικα). Όλες οι μέθοδοι μιας διεπαφής είναι αφηρημένες μέθοδοι.
Δεν είναι δυνατή η δημιουργία διεπαφής. Ωστόσο, οι κλάσεις που εφαρμόζουν διεπαφές μπορούν να δημιουργηθούν. Οι διεπαφές δεν περιέχουν ποτέ μεταβλητές παρουσίας, αλλά μπορούν να περιέχουν δημόσιες στατικές τελικές μεταβλητές (δηλαδή, σταθερές μεταβλητές κλάσης)
Τι είναι η αφηρημένη τάξη;
Μια κλάση που έχει την αφηρημένη λέξη-κλειδί στη δήλωσή της ονομάζεται abstract class. Οι αφηρημένες τάξεις πρέπει να έχουν τουλάχιστον μία αφηρημένη μέθοδο. , δηλαδή, μεθόδους χωρίς σώμα. Μπορεί να έχει πολλαπλές συγκεκριμένες μεθόδους.
Οι αφηρημένες τάξεις σάς επιτρέπουν να δημιουργήσετε σχεδιαγράμματα για συγκεκριμένες κατηγορίες. Αλλά η κληρονομική τάξη πρέπει να εφαρμόσει την αφηρημένη μέθοδο.
Οι αφηρημένες τάξεις δεν μπορούν να δημιουργηθούν.
Σημαντικοί λόγοι για τη χρήση διεπαφών
- Οι διεπαφές χρησιμοποιούνται για την επίτευξη αφαίρεσης.
- Σχεδιασμένο για να υποστηρίζει ανάλυση δυναμικής μεθόδου στο χρόνο εκτέλεσης
- Σας βοηθά να επιτύχετε χαλαρή σύνδεση.
- Σας επιτρέπει να διαχωρίσετε τον ορισμό μιας μεθόδου από την ιεραρχία κληρονομιάς
Σημαντικοί λόγοι για τη χρήση της αφηρημένης κλάσης
- Οι αφηρημένες τάξεις προσφέρουν την προεπιλεγμένη λειτουργικότητα για τις υποκατηγορίες.
- Παρέχει ένα πρότυπο για μελλοντικές συγκεκριμένες τάξεις
- Σας βοηθά να ορίσετε μια κοινή διεπαφή για τις υποκατηγορίες της
- Η αφηρημένη κλάση επιτρέπει επαναχρησιμοποίηση κώδικα.
Διεπαφή Vs. Περίληψη τάξη
Μια αφηρημένη τάξη σάς επιτρέπει να κάνετε λειτουργικότητα τις οποίες μπορούν να εφαρμόσουν ή να παρακάμψουν οι υποκατηγορίες, ενώ μια διεπαφή σάς επιτρέπει να δηλώνετε τη λειτουργικότητα αλλά όχι να την εφαρμόζετε. Μια τάξη μπορεί να επεκτείνει μόνο μία αφηρημένη κλάση, ενώ μια τάξη μπορεί να εφαρμόσει πολλαπλές διεπαφές.
Παράμετροι | Διεπαφή | Περίληψη τάξη |
---|---|---|
Ταχύτητα | Αργός | Γρήγορα |
Πολλαπλές κληρονομίες | Εφαρμόστε πολλές διεπαφές | Μόνο μία αφηρημένη τάξη |
Δομή | Αφηρημένες μέθοδοι | Περίληψη & συγκεκριμένες μέθοδοι |
Πότε να το χρησιμοποιήσετε | Μελλοντική βελτίωση | Για να αποφύγετε την ανεξαρτησία |
Κληρονομικότητα / Υλοποίηση | Μια κλάση μπορεί να εφαρμόσει πολλαπλές διεπαφές | Η τάξη μπορεί να κληρονομήσει μόνο μία αφηρημένη τάξη |
Προεπιλεγμένη εφαρμογή | Ενώ προσθέτετε νέα πράγματα στη διεπαφή, είναι ένας εφιάλτης να βρείτε όλους τους υλοποιητές και να εφαρμόσετε νέα πράγματα. | Σε περίπτωση Abstract Class, μπορείτε να επωφεληθείτε από την προεπιλεγμένη εφαρμογή. |
Τροποποιητές πρόσβασης | Η διεπαφή δεν έχει τροποποιητές πρόσβασης. Όλα όσα ορίζονται μέσα στη διεπαφή θεωρείται δημόσιο τροποποιητή. | Το Abstract Class μπορεί να έχει τροποποιητή πρόσβασης. |
Πότε να το χρησιμοποιήσετε | Είναι καλύτερο να χρησιμοποιείτε διεπαφή όταν διάφορες υλοποιήσεις μοιράζονται μόνο την υπογραφή μεθόδου. Πολυμορφική ιεραρχία τύπων τιμών. | Θα πρέπει να χρησιμοποιείται όταν διάφορες υλοποιήσεις του ίδιου είδους μοιράζονται μια κοινή συμπεριφορά. |
Πεδία δεδομένων | η διεπαφή δεν μπορεί να περιέχει πεδία δεδομένων. | η τάξη μπορεί να έχει πεδία δεδομένων. |
Προεπιλογή πολλαπλής κληρονομικότητας | Μια τάξη μπορεί να εφαρμόσει πολλές διεπαφές. | Μια τάξη κληρονομεί μόνο μία αφηρημένη τάξη. |
Εκτέλεση | Μια διεπαφή είναι αφηρημένη και δεν μπορεί να παρέχει κώδικα. | Μια αφηρημένη κλάση μπορεί να δώσει πλήρη, προεπιλεγμένο κώδικα που θα πρέπει να παρακαμφθεί. |
Χρήση τροποποιητών της Access | Δεν μπορείτε να χρησιμοποιήσετε τροποποιητές πρόσβασης για τη μέθοδο, τις ιδιότητες κ.λπ. | Μπορείτε να χρησιμοποιήσετε μια αφηρημένη κλάση που περιέχει τροποποιητές πρόσβασης. |
Χρήση | Οι διεπαφές βοηθούν στον καθορισμό των περιφερειακών ικανοτήτων μιας τάξης. | Μια αφηρημένη τάξη καθορίζει την ταυτότητα μιας τάξης. |
Καθορισμένα πεδία | Δεν μπορούν να οριστούν πεδία | Μια αφηρημένη τάξη σάς επιτρέπει να ορίσετε τόσο πεδία όσο και σταθερές |
Κληρονομία | Μια διεπαφή μπορεί να κληρονομήσει πολλές διεπαφές αλλά δεν μπορεί να κληρονομήσει μια κλάση. | Μια αφηρημένη κλάση μπορεί να κληρονομήσει μια κλάση και πολλές διεπαφές. |
Κατασκευαστής ή καταστροφείς | Μια διεπαφή δεν μπορεί να δηλώσει κατασκευαστές ή καταστροφείς. | Μια αφηρημένη τάξη μπορεί να δηλώσει κατασκευαστές και καταστροφείς. |
Όριο επεκτάσεων | Μπορεί να επεκτείνει οποιονδήποτε αριθμό διεπαφών. | Μπορεί να επεκτείνει μόνο μία τάξη ή μία αφηρημένη τάξη κάθε φορά. |
Αφηρημένη λέξη-κλειδί | Σε μια αφηρημένη λέξη-κλειδί διεπαφής, είναι προαιρετική για τη δήλωση μιας μεθόδου ως περίληψη. | Σε μια αφηρημένη τάξη, η αφηρημένη λέξη-κλειδί είναι υποχρεωτική για τη δήλωση μιας μεθόδου ως περίληψη. |
Τύπος τάξης | Μια διεπαφή μπορεί να έχει μόνο δημόσιες αφηρημένες μεθόδους. | Μια αφηρημένη τάξη έχει προστατευμένες και δημόσιες αφηρημένες μεθόδους. |
Δείγμα κώδικα για Interface και Abstract Class σε Java
Ακολουθεί δείγμα κώδικα για τη δημιουργία διεπαφής και αφηρημένης κλάσης σε Java
Σύνταξη διεπαφής
interface name{//methods}
Παράδειγμα διασύνδεσης Java:
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();}}
Σύνταξη αφηρημένης τάξης
abstract class name{// code}
Παράδειγμα αφηρημένης τάξης:
abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}