Συγκριτικό διάγραμμα
Βάση σύγκρισης | Τάξη | Διεπαφή |
---|---|---|
Βασικός | Μια κλάση δημιουργείται σε παράσταση για τη δημιουργία αντικειμένων. | Μια διεπαφή δεν μπορεί ποτέ να παρουσιαστεί ως παράσταση, καθώς οι μέθοδοι δεν είναι σε θέση να εκτελέσουν οποιαδήποτε ενέργεια για την επίκληση. |
Λέξη κλειδί | τάξη | διεπαφή |
Προσδιορισμός πρόσβασης | Τα μέλη μιας τάξης μπορούν να είναι ιδιωτικά, δημόσια ή προστατευόμενα. | Τα μέλη μιας διασύνδεσης είναι πάντα δημόσια. |
Μέθοδοι | Οι μέθοδοι μιας τάξης ορίζονται για να εκτελέσουν μια συγκεκριμένη ενέργεια. | Οι μέθοδοι σε μια διεπαφή είναι καθαρά αφηρημένες. |
Εφαρμογή / Επέκταση | Μια κλάση μπορεί να εφαρμόσει οποιοδήποτε αριθμό διεπαφών και μπορεί να επεκτείνει μόνο μία κατηγορία. | Μια διεπαφή μπορεί να επεκτείνει πολλαπλές διεπαφές αλλά δεν μπορεί να υλοποιήσει καμία διασύνδεση. |
Κατασκευαστής | Μια κλάση μπορεί να έχει κατασκευαστές για την προετοιμασία των μεταβλητών. | Μια διεπαφή δεν μπορεί ποτέ να έχει έναν κατασκευαστή, καθώς δεν υπάρχει σχεδόν καμία μεταβλητή για την αρχικοποίηση. |
Ορισμός της κλάσης
Μια κατηγορία είναι μια πολύ σημαντική πτυχή του προγραμματισμού Java χωρίς τάξεις που δεν μπορείτε να εφαρμόσετε ένα πρόγραμμα java. Μια κλάση δημιουργεί τύπους αναφοράς και αυτοί οι τύποι αναφοράς χρησιμοποιούνται για τη δημιουργία αντικειμένων. Μια τάξη έχει μια υπογραφή και ένα σώμα. Η υπογραφή μιας κλάσης έχει το όνομα της τάξης και τις πληροφορίες που λέει αν η τάξη έχει κληρονομήσει άλλη τάξη. Το σώμα μιας τάξης έχει πεδία και μεθόδους που λειτουργούν σε αυτούς τους τομείς. Μια κλάση δημιουργείται χρησιμοποιώντας μια κλάση λέξεων-κλειδιών. Ας δούμε πώς να δηλώσουμε μια τάξη.
class class_name {/ * πεδία ... μεθόδους * /}
Όταν δημιουργείται μια κλάση, κάθε αντικείμενο που δημιουργείται περιέχει ένα αντίγραφο πεδίων και μεθόδων μαζί. Τα πεδία και τα μέλη που δηλώνονται μέσα σε μια τάξη μπορεί να είναι στατικά ή μη στατικά. Η τιμή στατικού μέλους είναι σταθερή για κάθε αντικείμενο, ενώ τα μη στατικά μέλη αρχικοποιούνται από κάθε αντικείμενο διαφορετικά ανάλογα με τις απαιτήσεις του.
Τα μέλη μιας τάξης έχουν προσδιοριστές πρόσβασης που καθορίζουν την προβολή και την προσβασιμότητα των μελών στον χρήστη ή στις υποκατηγορίες. Οι προσδιοριστές πρόσβασης είναι δημόσιοι, ιδιωτικοί και προστατευμένοι. Μια κλάση μπορεί να κληρονομηθεί από μια άλλη τάξη χρησιμοποιώντας τον προσδιοριστή πρόσβασης, ο οποίος θα αποφασίσει την ορατότητα των μελών μιας υπερκλάσης (κληρονομούμενη τάξη) σε μια υποκατηγορία (κληρονομική τάξη). Έτσι η τάξη εκπληρώνει την έννοια της κρυφής κρυπτογράφησης δεδομένων σε αντικειμενοστραφή προγραμματισμό.
Ορισμός της διασύνδεσης
Μια διεπαφή είναι επίσης μεταξύ των τύπων αναφοράς που ορίζονται στην Java. Η σημασία μιας διεπαφής είναι ότι στην Java, μια τάξη μπορεί να κληρονομήσει μόνο μία τάξη. Για να αποφευχθεί αυτός ο περιορισμός, οι σχεδιαστές της Java εισήγαγαν μια έννοια διεπαφής. Μια διεπαφή είναι συντακτικά παρόμοια με μια κλάση, αλλά στερείται δήλωση πεδίου και οι μέθοδοι μέσα σε μια διεπαφή δεν έχουν καμία εφαρμογή. Μια διασύνδεση δηλώνεται χρησιμοποιώντας μια διασύνδεση λέξεων-κλειδιών. Ας δούμε τη δήλωση διεπαφής.
διεπαφή interface_name {πληκτρολογήστε var_name = τιμή; πληκτρολογήστε τη μέθοδο1 (λίστα παραμέτρων). πληκτρολογήστε τη μέθοδο2 (λίστα παραμέτρων). . . }}
Μια διεπαφή δεν ορίζει καμία μέθοδο που δηλώνεται μέσα σε αυτήν επειδή δεν διαθέτει σε πεδία για να λειτουργήσει. Ακριβώς επειδή οποιαδήποτε μέθοδος μέσα σε μια διεπαφή δεν εκτελεί καμία ενέργεια, μια διεπαφή δεν μπορεί ποτέ να παρουσιαστεί. Εάν μια διασύνδεση έχει κάποιο μέλος πεδίου, πρέπει να αρχικοποιηθεί κατά τη στιγμή της δήλωσης. Μια διεπαφή δεν περιέχει ποτέ κανένα κατασκευαστή, καθώς δεν διαθέτει στα μέλη του πεδίου για να προετοιμαστεί. Έτσι, μια διεπαφή ορίζει μόνο τι πρέπει να κάνει μια τάξη αντί για το πώς πρέπει να κάνει.
Μια διεπαφή που δημιουργήθηκε μία φορά μπορεί να εφαρμοστεί από οποιονδήποτε αριθμό κλάσεων χρησιμοποιώντας μια λέξη-κλειδί υλοποιεί . Αλλά οι κλάσεις που εφαρμόζουν μια διεπαφή πρέπει να ορίζουν όλες τις μεθόδους μέσα σε μια διεπαφή. Μια διασύνδεση μπορεί επίσης να κληρονομήσει μια άλλη διεπαφή χρησιμοποιώντας λέξη-κλειδί επέκτασης . Εάν μια κλάση εφαρμόζει μια διεπαφή που επεκτείνει μια άλλη διεπαφή. Στη συνέχεια, μια τάξη πρέπει να καθορίσει τις μεθόδους και των δύο διεπαφών που εμφανίζονται σε μια αλυσίδα. Οι μέθοδοι μέσα σε μια διεπαφή πρέπει πάντα να είναι δημόσιες, καθώς πρέπει να έχουν πρόσβαση από τις τάξεις που τις εφαρμόζουν.
Βασικές διαφορές μεταξύ της κλάσης και της διεπαφής στη Java
- Μια κλάση μπορεί να δημιουργηθεί με δημιουργία αντικειμένων. Μια διεπαφή δεν παράγεται ποτέ, επειδή οι μέθοδοι που δηλώνονται μέσα σε μια διεπαφή είναι αφηρημένες και δεν εκτελούν καμία ενέργεια, οπότε δεν υπάρχει καμία χρήση της παράδοσης οποιασδήποτε διεπαφής.
- Μια τάξη δηλώνεται χρησιμοποιώντας μια τάξη λέξεων-κλειδιών. Με τον ίδιο τρόπο, δημιουργείται μια διεπαφή χρησιμοποιώντας μια διασύνδεση λέξεων-κλειδιών.
- Τα μέλη μιας τάξης μπορούν να έχουν τον προσδιοριστή πρόσβασης όπως δημόσιο, ιδιωτικό, προστατευμένο. Αλλά τα μέλη μιας διεπαφής είναι πάντα δημόσια, καθώς πρέπει να έχουν πρόσβαση από τις τάξεις που τις εφαρμόζουν.
- Οι μέθοδοι μέσα σε μια κλάση ορίζονται για να εκτελέσουν μια ενέργεια στα πεδία που δηλώνονται στην κλάση. Δεδομένου ότι η διεπαφή στερείται της δήλωσης πεδίων, οι μέθοδοι μέσα σε μια διεπαφή είναι καθαρά αφηρημένες.
- Μια κλάση μπορεί να υλοποιήσει οποιονδήποτε αριθμό διεπαφών αλλά μπορεί να επεκτείνει μόνο μία σούπερ τάξη. Μια διεπαφή μπορεί να επεκτείνει οποιοδήποτε αριθμό διεπαφών, αλλά δεν μπορεί να υλοποιήσει καμία διασύνδεση.
- Μια κλάση έχει ορίσει κατασκευαστές μέσα σε αυτήν για να πάρει την αρχική μεταβλητή. Όμως, μια διεπαφή δεν έχει κατασκευαστές, καθώς δεν υπάρχουν πεδία για αρχικοποίηση. Τα πεδία μιας διεπαφής αρχικοποιούνται κατά τη στιγμή της δήλωσής τους μόνο.
Συμπέρασμα:
Και οι δύο κλάσεις και οι διεπαφές έχουν τη δική τους σημασία. Μια κλάση χρησιμοποιείται όταν πρέπει να καθορίσουμε τον τρόπο με τον οποίο θα γίνει η εργασία. Μια διεπαφή χρησιμοποιείται όταν πρέπει να γνωρίζουμε ποια εργασία πρέπει να γίνει.