Βασική διαφορά – Class vs Interface
Ο αντικειμενοστρεφής προγραμματισμός (OOP) είναι ένα κοινό παράδειγμα στην ανάπτυξη λογισμικού. Βοηθά να φέρουμε σενάρια πραγματικού κόσμου στον προγραμματισμό χρησιμοποιώντας κλάσεις και αντικείμενα. Μια κλάση είναι ένα προσχέδιο για τη δημιουργία ενός αντικειμένου. Ο προγραμματιστής μπορεί να δημιουργήσει μια κλάση με ιδιότητες και μεθόδους. Μαθητής και δάσκαλος είναι αντικείμενα. Η δημιουργία ενός αντικειμένου είναι γνωστή ως instantiation. Το OOP χρησιμοποιεί επίσης διεπαφές. Οι διεπαφές και η κλάση μπορεί να φαίνονται παρόμοια, αλλά έχουν μια διαφορά. Αυτό το άρθρο εξετάζει τη διαφορά μεταξύ μιας κλάσης και μιας διεπαφής. Η βασική διαφορά μεταξύ μιας κλάσης και μιας διεπαφής είναι ότι μια κλάση είναι ένας τύπος αναφοράς που είναι ένα προσχέδιο για τη δημιουργία στιγμιότυπου ενός αντικειμένου, ενώ η διεπαφή είναι ένας τύπος αναφοράς που δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία στιγμιότυπου ενός αντικειμένου.
Τι είναι Class;
Στο OOP, τα πάντα θεωρούνται ως αντικείμενο. Δεν είναι δυνατή η δημιουργία αντικειμένου χωρίς κλάση. Μια κλάση είναι ένα προσχέδιο για τη δημιουργία ενός αντικειμένου. Όταν χτίζει ένα σπίτι, ο αρχιτέκτονας σχεδιάζει το σχέδιο. Το σχέδιο είναι παρόμοιο με μια τάξη. Το σπίτι μοιάζει με το αντικείμενο. Η τάξη είναι το σχέδιο για την κατασκευή ενός αντικειμένου. Ένα αντικείμενο είναι αυτό που δημιουργείται χρησιμοποιώντας την κλάση.
Η κλάση περιέχει τις ιδιότητες και τις μεθόδους. Ένας μαθητής μπορεί να έχει ιδιότητες όπως όνομα, βαθμός, αριθμός ευρετηρίου. Ένας μαθητής μπορεί να έχει μεθόδους όπως διάβασμα, περπάτημα, μελέτη. Δημιουργείται μια κλάση με τις απαραίτητες ιδιότητες και μεθόδους.
Η σύνταξη για τη δημιουργία κλάσης σε πολλές γλώσσες προγραμματισμού είναι η εξής. Δημιουργείται χρησιμοποιώντας την κλάση λέξεων-κλειδιών.
class class_name {
// ιδιότητες
//μέθοδοι
}
Γλώσσες προγραμματισμού όπως η C και η Java ακολουθούν παρόμοια σύνταξη για να δημιουργήσουν ένα αντικείμενο χρησιμοποιώντας μια κλάση. Ας υποθέσουμε ότι το όνομα της τάξης είναι Student.
Μαθητής s1=νέος Μαθητής ();
Αυτό το s1 είναι το αντικείμενο. Η λέξη-κλειδί "νέα" χρησιμοποιείται για την εκχώρηση μνήμης για τις ιδιότητες. Μια κλάση έχει επίσης έναν κατασκευαστή για την προετοιμασία ιδιοτήτων ή μεταβλητών.
Μέλη κλάσης, όπως ιδιότητες και μέθοδοι, έχουν τροποποιητές πρόσβασης. Οι προσδιοριστές πρόσβασης περιγράφουν την προσβασιμότητα και την ορατότητα αυτών των μελών σε άλλες κλάσεις. Τα μέλη της τάξης μπορούν να έχουν προσδιοριστές πρόσβασης όπως δημόσιοι, ιδιωτικοί και προστατευμένοι. Τα δημόσια μέλη είναι προσβάσιμα από άλλες τάξεις. Τα ιδιωτικά μέλη είναι προσβάσιμα μόνο στην τάξη. Τα προστατευμένα μέλη είναι προσβάσιμα εντός της κλάσης και των σχετικών υποκλάσεων.
Τι είναι η διεπαφή;
Η αφαίρεση είναι ένας πυλώνας του αντικειμενοστρεφούς προγραμματισμού. Είναι η απόκρυψη των λεπτομερειών υλοποίησης και η εμφάνιση της λειτουργικότητας στον χρήστη. Η αφαίρεση επιτυγχάνεται χρησιμοποιώντας αφηρημένες κλάσεις και διεπαφές. Μια αφηρημένη μέθοδος δεν έχει υλοποίηση. Μια κλάση που περιέχει τουλάχιστον μια αφηρημένη μέθοδο ονομάζεται αφηρημένη κλάση.
Όταν υπάρχουν δύο αφηρημένες κλάσεις, θα πρέπει να εφαρμοστούν οι μέθοδοι που δηλώνονται σε αυτές τις κλάσεις. Μια νέα κλάση χρησιμοποιείται για την υλοποίηση αυτών των μεθόδων. Εάν και οι δύο κλάσεις είχαν την ίδια μέθοδο, μπορεί να προκληθεί πρόβλημα ασάφειας. Επομένως, γλώσσες προγραμματισμού όπως η Java και η C έχουν διεπαφή.
Οι διεπαφές περιέχουν μόνο τη δήλωση μεθόδων. Δεν υπάρχει τρόπος υλοποίησης. Επίσης, οι διεπαφές δεν μπορούν να χρησιμοποιηθούν για τη δημιουργία αντικειμένων. Χρησιμοποιούνται για την υποστήριξη πολλαπλών κληρονομιών και για την ασφάλεια του κωδικού.
Η σύνταξη του Interface είναι η εξής. Διασύνδεση χρησιμοποιήστε τη λέξη-κλειδί "διεπαφή".
interface interface_name{
type method1(parameter_list);
type method2(parameter_list);
}
Σύμφωνα με τα παραπάνω, οι διεπαφές έχουν μόνο τη δήλωση. Δεν υπάρχει ορισμός. Έτσι, οι διεπαφές δεν μπορούν να στιγμιώσουν αντικείμενα. Δίνει μόνο μια αφηρημένη άποψη του τι είναι η διεπαφή. Οι μέθοδοι που δηλώνονται στη διεπαφή μπορούν να υλοποιηθούν από μία ή πολλές κλάσεις. Μια τάξη χρησιμοποιεί τη λέξη-κλειδί «υλοποίηση» για να υλοποιήσει μια διεπαφή. Ανατρέξτε στο παρακάτω παράδειγμα γραμμένο με Java.
Εικόνα 01: Πρόγραμμα που χρησιμοποιεί διεπαφές
Σύμφωνα με το παραπάνω πρόγραμμα, το Α και το Β είναι διεπαφές. Η διεπαφή Α έχει μια δήλωση μεθόδου που είναι το sum(). Η διεπαφή Β έχει μια δήλωση μεθόδου sub(). Η κλάση C υλοποιεί και τις δύο διεπαφές που είναι Α και Β. Επομένως, η κλάση C ορίζει και τις δύο μεθόδους sum() και sub(). Μετά τη δημιουργία του αντικειμένου τύπου C, είναι δυνατό να καλέσετε και τις δύο μεθόδους sum() και sub().
Οι μέθοδοι που δηλώνονται μέσα στη διεπαφή πρέπει πάντα να είναι δημόσιες επειδή οι κλάσεις υλοποίησης τις ορίζουν. Μια διεπαφή μπορεί επίσης να κληρονομήσει από μια άλλη διεπαφή.
Ποιες είναι οι ομοιότητες μεταξύ κλάσης και διεπαφής;
- Και οι δύο είναι τύποι αναφοράς.
- Και τα δύο σχετίζονται με Αντικειμενοστραφή Προγραμματισμό.
Ποια είναι η διαφορά μεταξύ κλάσης και διεπαφής;
Class vs Interface |
|
Η κλάση είναι ένας τύπος αναφοράς που αποτελεί σχέδιο για τη δημιουργία ενός αντικειμένου. | Η διεπαφή είναι ένας τύπος αναφοράς που δεν μπορεί να δημιουργηθεί. |
Εισαγωγή αντικειμένου | |
Μια κλάση χρησιμοποιείται για τη δημιουργία ενός αντικειμένου. | Δεν είναι δυνατή η δημιουργία μιας διεπαφής επειδή οι μέθοδοι δεν μπορούν να εκτελέσουν καμία ενέργεια. |
Κατασκευαστής | |
Μια κλάση περιέχει έναν κατασκευαστή, για την προετοιμασία των μεταβλητών. | Μια διεπαφή δεν περιέχει κατασκευαστή επειδή δεν είναι σχεδόν καθόλου μεταβλητές για προετοιμασία. |
Λέξη-κλειδί | |
Μια τάξη χρησιμοποιεί τη λέξη-κλειδί "class". | Μια διεπαφή χρησιμοποιεί τη λέξη-κλειδί "διεπαφή". |
Προσδιοριστής πρόσβασης | |
Τα μέλη της τάξης μπορούν να είναι ιδιωτικά, δημόσια και προστατευμένα. | Τα μέλη της διεπαφής πρέπει να είναι πάντα δημόσια επειδή τα ορίζουν οι κλάσεις υλοποίησης. |
Σύνοψη – Class vs Interface
Οι κλάσεις και οι διεπαφές χρησιμοποιούνται ευρέως στον αντικειμενοστραφή προγραμματισμό. Η διαφορά μεταξύ μιας κλάσης και μιας διεπαφής είναι ότι μια κλάση είναι ένας τύπος αναφοράς που είναι ένα προσχέδιο για τη δημιουργία στιγμιότυπου ενός αντικειμένου και η διεπαφή είναι ένας τύπος αναφοράς που δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία στιγμιότυπου ενός αντικειμένου. Μια κλάση μπορεί να υλοποιήσει πολλές διεπαφές. Αλλά μπορεί να επεκτείνει μόνο μία υπερκλάση. Στη διεπαφή μπορεί να κληρονομήσει πολλές διεπαφές, αλλά δεν μπορεί να υπάρξει υλοποίηση. Και τα δύο έχουν τη σημασία τους. Ο προγραμματιστής μπορεί να τα χρησιμοποιήσει σύμφωνα με την ανάπτυξη λογισμικού.
Λήψη του PDF Class vs Interface
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ τάξης και διεπαφής