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

Άποψη: 18805|Απάντηση: 0

[Επικοινωνία] Οι ομοιότητες και οι διαφορές μεταξύ εικονικής και (αφηρημένης) περίληψης και διεπαφής στη C#...

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 22/4/2019 2:41:09 μ.μ. | | |
Ερμηνεία 1

Στη C#, το Abstract και το Virtual προκαλούν σύγχυση, και τα δύο σχετίζονται με την κληρονομικότητα και περιλαμβάνουν τη χρήση παράκαμψης. Ας συζητήσουμε τις διαφορές μεταξύ των δύο:

1. Εικονική μέθοδος

Η εικονική λέξη-κλειδί χρησιμοποιείται για την τροποποίηση μεθόδων στη βασική κλάση. Υπάρχουν δύο περιπτώσεις όπου χρησιμοποιείται εικονικό:

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

Σενάριο 2: Μια εικονική μέθοδος ορίζεται στη βασική κλάση και στη συνέχεια η μέθοδος ξαναγράφεται χρησιμοποιώντας παράκαμψη στην παράγωγη κλάση. Στην κλήση στην παράγωγη παρουσία κλάσης, η εικονική μέθοδος χρησιμοποιεί την παράγωγη μέθοδο επανεγγραφής.

2. Αφηρημένη μέθοδος (αφηρημένη μέθοδος)

Η αφηρημένη λέξη-κλειδί μπορεί να χρησιμοποιηθεί μόνο σε αφηρημένες για την τροποποίηση μεθόδων και δεν υπάρχει συγκεκριμένη υλοποίηση. Η υλοποίηση αφηρημένων μεθόδων πρέπει να υλοποιηθεί χρησιμοποιώντας τη λέξη-κλειδί παράκαμψης στην παράγωγη κλάση.

Η πιο ουσιαστική διαφορά μεταξύ μιας διεπαφής και μιας αφηρημένης κλάσης: μια αφηρημένη κλάση είναι μια ημιτελής κλάση, μια αφαίρεση ενός αντικειμένου, ενώ μια διεπαφή είναι ένας κανόνας συμπεριφοράς.


3. Λέξεις-κλειδιά

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

Virtua: Όταν μια μέθοδος δηλώνεται ως Εικονική, είναι μια εικονική μέθοδος μέχρι να χρησιμοποιήσετε τη μεταβλητή ClassName = new ClassName(); Πριν δηλώσετε ένα στιγμιότυπο μιας κλάσης, δεν υπάρχει στον πραγματικό χώρο μνήμης. Αυτή η λέξη-κλειδί χρησιμοποιείται πολύ συχνά στην κληρονομικότητα κλάσεων για να παρέχει υποστήριξη πολυμορφισμού για μεθόδους κλάσης.

overrride: υποδεικνύει μια επανεγγραφή Αυτή η κλάση κληρονομεί από την κλάση Shape
Εικονικό, αφηρημένο είναι να πω σε άλλες που θέλουν να κληρονομήσουν από αυτόν ότι μπορείτε να παρακάμψετε αυτήν τη μέθοδο ή την ιδιότητά μου, διαφορετικά δεν επιτρέπεται.
Περίληψη: Η δήλωση αφηρημένης μεθόδου είναι μια μέθοδος που πρέπει να παρακαμφθεί από μια παράγωγη κλάση, η οποία χρησιμοποιείται για να κληρονομηθεί. Μπορεί να θεωρηθεί ως μια φανταστική μέθοδος χωρίς συνειδητοποίηση. Εάν μια κλάση περιέχει μια αφηρημένη μέθοδο, τότε η κλάση πρέπει να οριστεί ως αφηρημένη κλάση, ανεξάρτητα από το αν περιέχει ή όχι άλλες γενικές μεθόδους. Οι αφηρημένες τάξεις δεν μπορούν να έχουν ουσίες.

α) Η μέθοδος της εικονικής τροποποίησης πρέπει να έχει υλοποίηση μεθόδου (ακόμα κι αν είναι μόνο ένα ζευγάρι αγκύλες) και η μέθοδος της αφηρημένης τροποποίησης δεν μπορεί να έχει υλοποίηση.

β) το εικονικό μπορεί να ξαναγραφτεί από υποκλάσεις, η περίληψη πρέπει να ξαναγραφτεί από υποκλάσεις

γ) Εάν μια συνάρτηση σε μια κλάση τροποποιηθεί με abstact, το όνομα της κλάσης πρέπει επίσης να τροποποιηθεί με abstact

δ) Δεν είναι δυνατή η δημιουργία αφηρημένων τροποποιημένων κλάσεων.

ε) Εάν μια μέθοδος στη C# είναι έτοιμη να ξαναγράψει τη γονική κλάση στην υποκλάση, η μέθοδος πρέπει να τροποποιηθεί με virtual στη γονική κλάση και overide στην υποκλάση, αποφεύγοντας τον προγραμματιστή να ξαναγράψει κατά λάθος τη γονική μέθοδο της γονικής κλάσης στην υποκλάση.

Σημείωση: Οι που τροποποιούνται με περίληψη μπορούν μόνο να κληρονομηθούν, όχι να δημιουργηθούν.

Ερμηνεία 2

Τόσο η εικονική όσο και η αφηρημένη χρησιμοποιούνται για την τροποποίηση της γονικής κλάσης, επιτρέποντας στον επαναπροσδιορισμό της θυγατρικής κλάσης παρακάμπτοντας τον ορισμό της γονικής κλάσης.

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

Αλλά είναι πολύ διαφορετικά. (το εικονικό είναι "εικονικό", το αφηρημένο είναι "αφηρημένο").

(1) Η μέθοδος της εικονικής τροποποίησης πρέπει να εφαρμοστεί (ακόμα κι αν προσθέτει μόνο ένα ζευγάρι αγκύλες), ενώ η μέθοδος της αφηρημένης τροποποίησης δεν πρέπει να εφαρμοστεί. Για παράδειγμα, εάν η μέθοδος εικονικής τροποποίησης δεν υλοποιηθεί:

Σφάλμα: Το "Test1.fun1()" πρέπει να δηλώσει το σώμα επειδή δεν έχει επισημανθεί ως αφηρημένο, εξωτερικό ή μερικό   

Για αφηρημένους τροποποιητές, εάν υλοποιηθούν:


Σφάλμα: Το "Test2.fun2()" δεν μπορεί να δηλώσει το σώμα επειδή έχει επισημανθεί ως αφηρημένο   

(2) Το εικονικό μπορεί να ξαναγραφτεί από υποκλάσεις, ενώ το αφηρημένο πρέπει να ξαναγραφτεί από υποκλάσεις.
Δεν υπάρχει σφάλμα στη μεταγλώττιση, εάν η μέθοδος του εικονικού τροποποιητή ξαναγραφτεί, πρέπει να προστεθεί παράκαμψη μπροστά της (που λέει στον μεταγλωττιστή ότι θέλετε να ξαναγράψετε την εικονική μέθοδο) και πρέπει να υπάρχει μια υλοποίηση, διαφορετικά η μεταγλώττιση θα είναι λάθος:
(3) Εάν ένα μέλος της κλάσης τροποποιηθεί με περίληψη, η περίληψη πρέπει να προστεθεί πριν από την κλάση, επειδή μόνο οι αφηρημένες μπορούν να έχουν αφηρημένες μεθόδους.

(4) Δεν μπορούν να δημιουργηθούν περιπτώσεις αφηρημένων κλάσεων, μπορούν μόνο να κληρονομηθούν και δεν μπορούν να δημιουργηθούν, για παράδειγμα: BaseTest2 base2 = new BaseTest2(); Θα υπάρχει ένα σφάλμα μεταγλώττισης: Η αφηρημένη κλάση ή διεπαφή δεν μπορεί να δημιουργήσει μια παρουσία.

(5) Στη C#, εάν θέλετε να ξαναγράψετε μια μέθοδο σε μια υποκλάση, πρέπει να προσθέσετε εικονική πριν από τη γονική μέθοδο και να παρακάμψετε πριν από τη μέθοδο υποκλάσης, έτσι ώστε να αποφύγετε τους προγραμματιστές να ξαναγράψουν κατά λάθος τη γονική μέθοδο στην υποκλάση.

(6) Η αφηρημένη μέθοδος πρέπει να αντικατασταθεί και η εικονική μέθοδος πρέπει να έχει υλοποίηση (ακόμα κι αν είναι μια μέθοδος που ορίζεται στην αφηρημένη κλάση).
Ερμηνεία 3
Ομοιότητες:
1. Μπορούν όλα να κληρονομηθούν
2. Κανένα από αυτά δεν μπορεί να δημιουργηθεί
3. Μπορεί να περιέχει δηλώσεις μεθόδου
4. Οι παράγωγες πρέπει να εφαρμόζουν μη πραγματοποιημένες μεθόδους
Διακρίνω:
1. Οι αφηρημένες βασικές μπορούν να ορίσουν πεδία, χαρακτηριστικά και υλοποιήσεις μεθόδων. Οι διασυνδέσεις μπορούν να ορίσουν μόνο χαρακτηριστικά, ευρετήρια, συμβάντα και δηλώσεις μεθόδων και δεν μπορούν να περιέχουν πεδία.
2. Μια αφηρημένη κλάση είναι μια ημιτελής κλάση που πρέπει να βελτιωθεί περαιτέρω, ενώ μια διεπαφή είναι ένας κανόνας συμπεριφοράς. Οι προσαρμοσμένες διεπαφές της Microsoft συνοδεύονται πάντα από ένα ικανό πεδίο για να αποδείξουν ότι είναι εκφράσεις του "Μπορώ να το κάνω..." ”
3. Οι διεπαφές μπορούν να υλοποιηθούν πολλές φορές και οι αφηρημένες μπορούν να κληρονομηθούν μόνο από ένα άτομο
4. Οι αφηρημένες ορίζονται περισσότερο μεταξύ μιας σειράς στενά συνδεδεμένων κλάσεων, ενώ οι περισσότερες από τις διεπαφές σχετίζονται χαλαρά, αλλά όλες υλοποιούν μια συγκεκριμένη συνάρτηση
5. Οι αφηρημένες τάξεις είναι έννοιες που αφαιρούνται από μια σειρά σχετικών αντικειμένων, επομένως αντικατοπτρίζουν την εσωτερική κοινότητα των πραγμάτων. Μια διεπαφή είναι μια λειτουργική σύμβαση που ορίζεται για να ικανοποιεί εξωτερικές κλήσεις, επομένως αντανακλά τα εξωτερικά χαρακτηριστικά των πραγμάτων
6. Η διεπαφή βασικά δεν έχει συγκεκριμένα χαρακτηριστικά κληρονομικότητας, υπόσχεται μόνο μια μέθοδο που μπορεί να ονομαστεί
7. Η διεπαφή μπορεί να χρησιμοποιηθεί για την υποστήριξη επανακλήσεων, αλλά η κληρονομικότητα δεν έχει αυτήν τη δυνατότητα
8. Οι συγκεκριμένες μέθοδοι που εφαρμόζονται από αφηρημένες είναι εικονικές από προεπιλογή, αλλά οι μέθοδοι διεπαφής στην κλάση που υλοποιούν τη διεπαφή είναι μη εικονικές από προεπιλογή, φυσικά, μπορείτε επίσης να τις δηλώσετε εικονικές
9. Εάν η αφηρημένη κλάση υλοποιεί τη διεπαφή, η μέθοδος στη διεπαφή μπορεί να αντιστοιχιστεί στην αφηρημένη κλάση ως αφηρημένη μέθοδος χωρίς να χρειάζεται να την εφαρμόσετε, αλλά η μέθοδος στη διεπαφή μπορεί να εφαρμοστεί στην υποκλάση της αφηρημένης κλάσης
Κανόνες χρήσης:
1. Οι αφηρημένες χρησιμοποιούνται κυρίως για στενά συνδεδεμένα αντικείμενα, ενώ οι διεπαφές χρησιμοποιούνται καλύτερα για την παροχή γενικής λειτουργικότητας για άσχετες
2. Εάν θέλετε να σχεδιάσετε μια μεγάλη λειτουργική μονάδα, χρησιμοποιήστε αφηρημένες. Εάν θέλετε να σχεδιάσετε μικρά, συνοπτικά λειτουργικά μπλοκ, χρησιμοποιήστε διεπαφές.
3. Εάν αναμένεται να δημιουργηθούν πολλές εκδόσεις του στοιχείου, δημιουργήστε μια αφηρημένη κλάση. Μόλις δημιουργηθεί μια διεπαφή, δεν μπορεί να αλλάξει. Εάν απαιτείται μια νέα έκδοση της διεπαφής, πρέπει να δημιουργηθεί μια εντελώς νέα διεπαφή.
4. Εάν η δημιουργημένη συνάρτηση θα χρησιμοποιηθεί μεταξύ ενός ευρέος φάσματος ετερογενών αντικειμένων, χρησιμοποιήστε τη διεπαφή. Εάν θέλετε να παρέχετε κοινή υλοποιημένη λειτουργικότητα σε όλες τις υλοποιήσεις ενός στοιχείου, χρησιμοποιήστε αφηρημένες.
5. Αναλύστε το αντικείμενο, βελτιώστε την εσωτερική κοινότητα για να σχηματίσετε μια αφηρημένη τάξη, η οποία χρησιμοποιείται για να εκφράσει την ουσία του αντικειμένου, δηλαδή «τι». Οι διεπαφές έχουν προτεραιότητα όταν πρέπει να επεκταθούν εξωτερικές κλήσεις ή λειτουργίες
6. Ένας καλός ορισμός διεπαφής πρέπει να είναι συγκεκριμένος και λειτουργικός, όχι πολυλειτουργικός, διαφορετικά θα προκαλέσει ρύπανση της διεπαφής. Εάν μια κλάση υλοποιεί μόνο μία συνάρτηση της διεπαφής, αλλά πρέπει να εφαρμόσει άλλες μεθόδους στη διεπαφή, ονομάζεται ρύπανση διεπαφής
7. Προσπαθήστε να αποφύγετε τη χρήση κληρονομικότητας για να επιτύχετε τη συνάρτηση σχηματισμού, αλλά χρησιμοποιήστε πολυπλεξία μαύρου κουτιού, δηλαδή συνδυασμό αντικειμένων. Λόγω της αύξησης του αριθμού των επιπέδων κληρονομικότητας, η πιο άμεση συνέπεια είναι ότι όταν καλείτε μια κλάση σε αυτό το ταξινομικό σύστημα, πρέπει να τα φορτώσετε όλα στη στοίβα! Οι συνέπειες μπορούν να φανταστούν. (Σε συνδυασμό με την κατανόηση της αρχής της στοίβας). Ταυτόχρονα, οι ενδιαφερόμενοι φίλοι μπορούν να παρατηρήσουν ότι η Microsoft χρησιμοποιεί συχνά τη μέθοδο του συνδυασμός αντικειμένων κατά τη δημιουργία μιας κλάσης. Για παράδειγμα, στο asp.net, η κλάση Page έχει ιδιότητες όπως Server Request, αλλά στην πραγματικότητα είναι όλα αντικείμενα μιας συγκεκριμένης κλάσης. Η χρήση αυτού του αντικειμένου της κλάσης Page για την κλήση των μεθόδων και των ιδιοτήτων άλλων κλάσεων είναι μια πολύ βασική αρχή σχεδιασμού
Για παράδειγμα:
Οι φόρμες παραθύρων μπορούν να σχεδιαστούν με αφηρημένες και οι δημόσιες λειτουργίες και ιδιότητες μπορούν να τοποθετηθούν σε μια αφηρημένη κλάση, έτσι ώστε η φόρμα και το παράθυρο διαλόγου να μπορούν να κληρονομήσουν από αυτήν την αφηρημένη κλάση και, στη συνέχεια, να επεκταθούν και να βελτιωθούν σύμφωνα με τις δικές τους ανάγκες.

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

Κοινότητα, ατομικότητα και επιλογή:
Ορισμένα βιβλία γράφουν ότι η C# συνιστά τη χρήση διεπαφών αντί για αφηρημένες βασικές και τονίζουν τα πολλά οφέλη από τη χρήση διεπαφών, με τα οποία δεν τολμώ να διαφωνήσω, από την παραπάνω λίστα, εξακολουθούν να υπάρχουν πολλές διαφορές μεταξύ των δύο και η ύπαρξη αυτής της διαφοράς πρέπει να καθορίσει τη διαφορά στα ισχύοντα σενάρια, για παράδειγμα, στην αφηρημένη βασική κλάση μπορεί να παρέχει προεπιλεγμένες υλοποιήσεις για ορισμένες μεθόδους, έτσι ώστε να αποφευχθεί η επαναλαμβανόμενη εφαρμογή τους σε υποκλάσεις και να βελτιωθεί η επαναχρησιμοποίηση του κώδικα. Αυτό είναι το πλεονέκτημα των αφηρημένων τάξεων. Η διεπαφή μπορεί να περιέχει μόνο αφηρημένες μεθόδους. Όσο για το πότε πρέπει να χρησιμοποιούνται αφηρημένες βασικές και πότε να χρησιμοποιούνται διεπαφές, εξαρτάται από το πώς βλέπουν οι χρήστες τις συνδέσεις μεταξύ των κληρονομικών κλάσεων, είτε πρόκειται για διαφορές προσωπικότητας είτε για κοινές συνδέσεις μεταξύ τους. Επιτρέψτε μου να το επεξηγήσω με ένα παράδειγμα ζωής.

Εάν σας δοθούν τρία αντικείμενα, δηλαδή άνθρωποι, ψάρια και βάτραχοι, και σας ζητηθεί να σχεδιάσετε μια βασική κατηγορία για να συνοψίσετε τη σχέση μεταξύ τους, τότε το πρώτο πράγμα που θα νιώσετε είναι ότι υπάρχουν μεγάλες διαφορές μεταξύ τους και είναι δύσκολο να αφαιρέσετε τα κοινά σημεία. Εδώ θα πρέπει να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε διεπαφές αντί για αφηρημένες βασικές για τρεις λόγους:
1. Η ατομικότητα είναι μεγαλύτερη από την κοινότητα.
2. Οι προσωπικότητες με μεγάλες διαφορές έχουν μερικές από τις ίδιες συμπεριφορές.
3. Υπάρχουν μεγάλες διαφορές στις μεθόδους συνειδητοποίησης της ίδιας συμπεριφοράς.
Αυτή τη στιγμή, σας δίνονται τρία ακόμη αντικείμενα, δηλαδή σταυροειδές κυπρίνος, κυπρίνος και χρυσόψαρο, και εξακολουθείτε να σας επιτρέπουν να σχεδιάσετε βασικές για να συνοψίσετε τη σύνδεση μεταξύ τους, τότε το πρώτο πράγμα που συνειδητοποιείτε είναι ότι όλα ανήκουν σε ψάρια και το δεύτερο είναι ότι ο τρόπος που κολυμπούν μπορεί να είναι ελαφρώς διαφορετικός, επομένως θα πρέπει να χρησιμοποιήσετε αφηρημένες βασικές αντί για διεπαφές, σε σύγκριση με το παραπάνω παράδειγμα, υπάρχουν τρεις λόγοι:
1. Η κοινότητα είναι μεγαλύτερη από την ατομικότητα
2. Τα άτομα με τα ίδια κοινά στοιχεία πρέπει να έχουν τα ίδια χαρακτηριστικά και συμπεριφορές
3. Υπάρχουν ορισμένες διαφορές στις μεθόδους υλοποίησης της ίδιας συμπεριφοράς
Μεταξύ των πολλών λόγων για τη χρήση διεπαφών ή αφηρημένων κλάσεων βάσης, ο τρίτος λόγος είναι στην πραγματικότητα ο ίδιος, ο οποίος περιγράφει την έννοια του πολυμορφισμού στο αντικειμενοστραφή, δηλαδή υλοποιείται παρακάμπτοντας τη γονική κλάση και καλώντας την αντίστοιχη μέθοδο κατά το χρόνο εκτέλεσης σύμφωνα με την αναφορά αντικειμένου που πέρασε. Ο δεύτερος λόγος αρχίζει να αποκλίνει, με τις διεπαφές να δίνουν έμφαση στην ίδια συμπεριφορά μεταξύ των κληρονομημένων αντικειμένων, ενώ οι αφηρημένες τονίζουν επίσης τις ίδιες ιδιότητες μεταξύ των κληρονομικών αντικειμένων. Αυτό που πραγματικά διακρίνει τις διεπαφές από τις αφηρημένες βασικές είναι οι ακόλουθοι λόγοι:

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

Κανόνες και περιστάσεις:
1. Να θυμάστε ότι μία από τις πιο σημαντικές αρχές της αντικειμενοστρεφούς σκέψης είναι: προγραμματισμός προσανατολισμένος στη διεπαφή.
2. Με τη βοήθεια διεπαφών και αφηρημένων τάξεων, πολλές ιδέες στα 23 μοτίβα σχεδίασης έχουν εφαρμοστεί έξυπνα και νομίζω ότι η ουσία τους είναι απλώς ότι είναι προσανατολισμένες στον αφηρημένο προγραμματισμό.
3. Οι αφηρημένες θα πρέπει να χρησιμοποιούνται κυρίως για στενά συνδεδεμένα αντικείμενα, ενώ οι διεπαφές χρησιμοποιούνται καλύτερα για την παροχή γενικής λειτουργικότητας για άσχετες.
4. Η διεπαφή εστιάζει στον τύπο σχέσης CAN-DO, ενώ η αφηρημένη κλάση εστιάζει στη σχέση IS-A.
5. Η συμπεριφορά πολυκαθορισμένων αντικειμένων στη διεπαφή. Οι αφηρημένες ορίζουν πολλαπλά τις ιδιότητες των αντικειμένων.
6. Οι ορισμοί διεπαφής μπορούν να χρησιμοποιούν δημόσιους, προστατευμένους, εσωτερικούς και ιδιωτικούς τροποποιητές, αλλά σχεδόν όλες οι διεπαφές ορίζονται ως δημόσιες, επομένως δεν χρειάζεται να πούμε περισσότερα.
7. «Η διεπαφή παραμένει αμετάβλητη» είναι ένας σημαντικός παράγοντας που πρέπει να ληφθεί υπόψη. Επομένως, κατά την προσθήκη επεκτάσεων από διεπαφές, θα πρέπει να προστίθενται νέες διεπαφές και όχι υπάρχουσες διεπαφές.
8. Προσπαθήστε να σχεδιάσετε τη διεπαφή σε ένα λειτουργικό μπλοκ με μία μόνο λειτουργία, λαμβάνοντας ως παράδειγμα το .NET Framework, το IDisposable, το IDisposable, το IComparable, το IEquatable, το IEnumerable κ.λπ.
9. Το κεφαλαίο γράμμα "I" μπροστά από το όνομα της διεπαφής είναι μια σύμβαση, όπως ακριβώς το όνομα του πεδίου ξεκινά με υπογράμμιση, τηρήστε αυτές τις αρχές.
10. Στη διεπαφή, όλες οι μέθοδοι είναι προεπιλεγμένες σε δημόσιες.
11. Εάν αναμένονται προβλήματα έκδοσης, μπορείτε να δημιουργήσετε μια "αφηρημένη κλάση". Για παράδειγμα, εάν δημιουργήσετε έναν σκύλο, ένα κοτόπουλο και μια πάπια, θα πρέπει να εξετάσετε το ενδεχόμενο να αφαιρέσετε τα ζώα για να αντιμετωπίσετε πράγματα που μπορεί να προκύψουν στο μέλλον. Η προσθήκη νέων μελών στη διεπαφή αναγκάζει όλες τις παράγωγες να τροποποιηθούν και να μεταγλωττιστούν εκ νέου, επομένως τα προβλήματα εκδόσεων υλοποιούνται καλύτερα με αφηρημένες.
12. Οι μη αφηρημένες που προέρχονται από αφηρημένες πρέπει να περιλαμβάνουν όλες τις κληρονομημένες αφηρημένες μεθόδους και τις πραγματικές υλοποιήσεις αφηρημένων προσθηκών.
13. Η νέα λέξη-κλειδί δεν μπορεί να χρησιμοποιηθεί για αφηρημένες τάξεις, ούτε μπορούν να σφραγιστούν, επειδή οι αφηρημένες δεν μπορούν να δημιουργηθούν.
14. Οι στατικοί ή εικονικοί τροποποιητές δεν μπορούν να χρησιμοποιηθούν σε δηλώσεις αφηρημένης μεθόδου.





Προηγούμενος:Το C# Enum Simple Permission Design χρησιμοποιεί την ιδιότητα FlagsAttribute
Επόμενος:Η τάξη Yiyun του Huang Yong έχει μηδενική κατανόηση του μίνι προγράμματος WeChat
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com