Διαφορά μεταξύ αφηρημένης κλάσης και διεπαφής σε C # Διαφορά μεταξύ

Anonim

Μια αφηρημένη κλάση μοιάζει πολύ με μια διεπαφή, αλλά η ιδέα είναι λίγο συγκεχυμένη για τους αρχάριους του OOP. Εννοιολογικά, μια αφηρημένη κλάση μοιάζει ακριβώς με μια διεπαφή, φυσικά, χωρίς καμία εφαρμογή, ωστόσο έχουν το δίκαιο μερίδιο των διαφορών τους. Ενώ μια αφηρημένη κλάση μπορεί να εφαρμοστεί μερικώς ή πλήρως, μια διεπαφή πρέπει να εφαρμοστεί πλήρως. Λοιπόν, η πιο αξιοσημείωτη διαφορά μεταξύ των δύο είναι ότι μια αφηρημένη κλάση μπορεί να έχει προεπιλεγμένη εφαρμογή, ενώ μια διεπαφή είναι ακριβώς ο ορισμός των μεθόδων που περιέχει μόνο τις δηλώσεις μελών. Ας συζητήσουμε τις θεωρητικές πτυχές και των δύο λεπτομερώς.

Τι είναι μια αφηρημένη κλάση;

Μια αφηρημένη κλάση είναι ένας ειδικός τύπος τάξης που λειτουργεί ως βάση άλλων τάξεων και δεν μπορεί να παρουσιαστεί. Η λογική εφαρμογής μιας αφηρημένης κλάσης παρέχεται από τις παράγωγες κλάσεις της. Για να γίνει μια αφηρημένη κλάση, χρησιμοποιείται ο "αφηρημένος" τροποποιητής που σημαίνει ότι κάποια υλοποίηση που λείπει πρέπει να εφαρμοστεί στην κλάση που προέρχεται από αυτήν. Περιέχει τόσο αφηρημένα όσο και μη αφηρημένα μέλη. Μια αφηρημένη κλάση αποσκοπεί στην παροχή βασικής λειτουργικότητας, η οποία μπορεί να μοιραστεί και να αντικατασταθεί από πολλαπλές παράγωγες κλάσεις. Είναι χρήσιμο να αποφευχθεί κάθε είδους αλληλεπικάλυψη κώδικα. Μοιάζουν πολύ με διεπαφές αλλά με πρόσθετη λειτουργικότητα.

Τι είναι μια διεπαφή;

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

--------------------------------------------------------------------------------- Αφηρημένη τάξη εναντίον διεπαφής: διαφορά μεταξύ αφηρημένης κλάσης και διεπαφής σε C #

Πολλαπλή κληρονομιά

  1. - Μια τάξη μπορεί να χρησιμοποιήσει μόνο μία αφηρημένη κλάση, επομένως δεν υποστηρίζεται πολλαπλή κληρονομικότητα. Μια διεπαφή, από την άλλη πλευρά, μπορεί να υποστηρίξει πολλαπλή κληρονομικότητα, πράγμα που σημαίνει ότι μια τάξη μπορεί να κληρονομήσει οποιοδήποτε αριθμό κληρονομιών. Ορισμός
  2. της Αφηρημένη κλάση και διεπαφή στο C # - Μια αφηρημένη κλάση είναι ένας ειδικός τύπος τάξης που μπορεί να περιέχει ορισμούς χωρίς εφαρμογή. Η λογική υλοποίησης παρέχεται από τις παράγωγες κλάσεις. Μπορεί να έχει αφηρημένες αλλά και αφηρημένες μεθόδους.Μια διεπαφή, από την άλλη πλευρά, είναι απλώς ένα μοτίβο που δεν μπορεί να κάνει τίποτα. Από τεχνική άποψη, είναι μόνο ένα κενό κέλυφος. Εφαρμογή
  3. - Μια αφηρημένη κλάση μπορεί να περιέχει και τον ορισμό και την εφαρμογή του. Είναι μια ατελής κλάση που δεν μπορεί να παρουσιαστεί ως παράσταση. Μια διεπαφή μπορεί να έχει μόνο την υπογραφή της λειτουργικότητας χωρίς κανέναν κωδικό.
  4. Τροποποιητές πρόσβασης - Μια αφηρημένη κλάση μπορεί να έχει αρκετούς τροποποιητές πρόσβασης όπως υποσυνθέσεις, λειτουργίες, ιδιότητες κ.λπ., ενώ μια διεπαφή δεν επιτρέπεται να έχει τροποποιητές πρόσβασης και όλες οι μέθοδοι πρέπει να ορίζονται εμμέσως ως δημόσιες. Ομοιογένεια
  5. - Μια αφηρημένη κλάση χρησιμοποιείται για υλοποιήσεις του ίδιου τύπου, συμπεριφοράς και κατάστασης, ενώ μια διεπαφή χρησιμοποιείται για εφαρμογές που μοιράζονται μόνο υπογραφές μεθόδων. Δήλωση
  6. - Μια αφηρημένη κλάση ενεργεί ως κλάση βάσης για όλες τις άλλες κλάσεις, ώστε να μπορεί να δηλώσει ή να χρησιμοποιήσει οποιαδήποτε μεταβλητή, ενώ δεν επιτρέπεται σε μια διεπαφή να δηλώσει οποιεσδήποτε μεταβλητές. Δήλωση κατασκευαστή
  7. - Ενώ μια αφηρημένη κλάση μπορεί να έχει δήλωση κατασκευαστή, μια διεπαφή δεν μπορεί να έχει δήλωση κατασκευαστή. Core vs. Peripheral
  8. - Μια αφηρημένη κλάση χρησιμοποιείται για τον καθορισμό της ταυτότητας πυρήνα μιας κλάσης και μπορεί να χρησιμοποιηθεί για αντικείμενα του ίδιου τύπου δεδομένων. Μια διεπαφή, από την άλλη πλευρά, χρησιμοποιείται για να καθορίσει την περιφερειακή ικανότητα μιας τάξης. Άκαμπτος εναντίον Supple
  9. - Μια αφηρημένη κλάση είναι πιο εύπλαστο από άποψη λειτουργικότητας, τουλάχιστον από την πλευρά του προγραμματιστή, ενώ μια διεπαφή είναι πιο άκαμπτη. Αφηρημένη τάξη εναντίον διεπαφής: μορφή πίνακα

Abstract Class

Διασύνδεση

Μια αφηρημένη κλάση μπορεί να έχει όλους τους τροποποιητές πρόσβασης για τη δήλωση των λειτουργιών, υποσυνόλων και ιδιοτήτων μελών.

Δεν επιτρέπεται σε μια διασύνδεση να έχουν τροποποιητές πρόσβασης για τη δήλωση των λειτουργιών, των υποσυνόλων, των ιδιοτήτων κλπ. Μελών. Όλα τα μέλη θεωρούνται ως σιωπηρά δημόσια. Μια τάξη μπορεί να χρησιμοποιήσει στο μέγιστο μόνο μία αφηρημένη τάξη.
Μια κλάση μπορεί να κληρονομήσει οποιοδήποτε αριθμό διεπαφών. Η πολλαπλή κληρονομιά δεν υποστηρίζεται σε αφηρημένη κλάση.
Μια διεπαφή μπορεί να υποστηρίζει πολλαπλή κληρονομικότητα. Τεχνικά, είναι μια τάξη που μπορεί ή όχι να περιέχει και τον ορισμό και την εφαρμογή του.
Μια διεπαφή μπορεί να έχει μόνο την υπογραφή της λειτουργικότητας, έτσι είναι βασικά ένα κενό κέλυφος. Μια αφηρημένη τάξη μπορεί να περιέχει μέλη. consts, καθορισμένες μεθόδους και διαστήματα μεθόδων.
Μια διεπαφή μπορεί να περιέχει μόνο μεθόδους και consts. Ορίζει την ταυτότητα πυρήνα μιας κλάσης και χρησιμοποιείται για την περιγραφή αντικειμένων του ίδιου τύπου δεδομένων.
Χρησιμοποιείται για να περιγράψει τις περιφερειακές ικανότητες μιας τάξης. Τα μέλη μιας αφηρημένης κλάσης δεν μπορούν να είναι στατικά αν δεν είναι πλήρες μέλος.
Τα μέλη μιας διασύνδεσης δεν μπορούν να είναι στατικά. Είναι ιδανικό για εφαρμογές ίδιου είδους και κοινής συμπεριφοράς.
Είναι καλύτερα να χρησιμοποιείτε διεπαφές εάν πολλές υλοποιήσεις μοιράζονται μόνο υπογραφές μεθόδων. Μπορεί να έχει δήλωση κατασκευαστή.
Δεν μπορεί να έχει δήλωση κατασκευαστή. Μια αφηρημένη κλάση έχει προκαθορισμένα πεδία και σταθερά.
Τα πεδία δεν μπορούν να οριστούν σε διεπαφές. Μπορεί να έχει τόσο αφηρημένες όσο και μη αφηρημένες μεθόδους.
Μπορεί να έχει μόνο αφηρημένες μεθόδους. Περίληψη

Ποια είναι η διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής; Αυτό είναι ίσως ένα από τα πιο συνηθισμένα ερωτήματα που τέθηκαν σε οποιαδήποτε τεχνική συνέντευξη. Είναι πιθανό να βρείτε μια πληθώρα πληροφοριών σχετικά με αφηρημένα μαθήματα και διεπαφές σε οποιοδήποτε C # tutorial, ωστόσο, η κατανόηση της διαφοράς μεταξύ των δύο είναι αρκετά δύσκολο κομμάτι. Μπορείτε να ενοποιήσετε όλες τις πληροφορίες που μπορείτε να βρείτε και ακόμα δεν μπορούν να πάρουν αρκετό. Λοιπόν, εννοιολογικά και οι δύο είναι οι πιο σημαντικοί όροι στον προγραμματισμό και είναι αρκετά ίδιοι, ωστόσο, διαφέρουν πολύ από την άποψη της λειτουργικότητας. Ενώ μια αφηρημένη κλάση είναι ένας ειδικός τύπος τάξης που λειτουργεί ως βάση για άλλες τάξεις, μια διεπαφή, από την άλλη πλευρά, είναι απλώς ένα κενό κέλυφος με μόνο δηλώσεις μελών.