Συγκριτικό διάγραμμα
Βάση σύγκρισης | Ιδιωτικός | Προστασία |
---|---|---|
Κληρονομική ιδιοκτησία στην κλάση που προκύπτει | Η παράγωγη κλάση δεν έχει πρόσβαση στα ιδιωτικά μέλη κατηγορίας βάσης. | Η παράγωγη κλάση μπορεί να έχει πρόσβαση σε προστατευμένα μέλη κατηγορίας βάσης. |
Προσιτότητα | Τα ιδιωτικά μέλη της τάξης είναι απροσπέλαστα εκτός του πεδίου της τάξης. | Τα προστατευμένα μέλη της τάξης είναι απροσπέλαστα εκτός του πεδίου της τάξης εκτός από την κατηγορία που προέρχεται αμέσως. |
Προσβάσιμο από τη δική του τάξη | Ναί | Ναί |
Προσβάσιμο από την παράγωγη κλάση | Οχι | Ναί |
Προσβάσιμο από το εξωτερικό | Οχι | Οχι |
Ορισμός ιδιωτικού
Τα μέλη της τάξης που δηλώνονται ως ιδιωτικά μπορούν να ανακτηθούν μόνο μέσα στην τάξη. Με άλλα λόγια, τα μέλη που δηλώνονται στο ιδιωτικό τμήμα της τάξης μπορούν να έχουν πρόσβαση μόνο από τη λειτουργία φίλων και τη λειτουργία των μελών της τάξης. Τα ιδιωτικά μέλη δεν μπορούν να αποκτηθούν απευθείας από την παράγωγη τάξη και είναι απρόσιτα από το πεδίο της τάξης.
Το πρόγραμμα C ++ παρουσιάζει την ιδέα των προσδιοριστών ιδιωτικής πρόσβασης.
#include using namespace std; κλάση A {ιδιωτική: int i; δημόσια: void get () {cout <> i; }}. κλάση B: δημόσια A {public: void show () {i ++; cout << "\ n Ο αριθμός που καταχωρίσατε μετά την incrementcpp"> # συμπεριλαμβάνεται χρησιμοποιώντας το χώρο ονομάτων std; class mamap {public: void mammalMethod (void) {cout << "Εμπίπτει στην κατηγορία των θηλαστικών." <Στο προαναφερθέν πρόγραμμα, ένα αντικείμενο της κλάσης παιδιού δημιουργείται με το όνομα "ob" και η συνάρτηση μέλους της γονικής κλάσης μπορεί να προσπελαστεί μέσω κλήσης μεθόδου κλάσης παιδιού "marine_mammalMethod". Παρόλο που δεν είναι δυνατή η άμεση πρόσβαση στη γονική μέθοδο με το αντικείμενο "ob".
Ορισμός προστατευόμενου
Τα μέλη της τάξης που δηλώνονται ως προστατευόμενα σε μια τάξη μπορούν να έχουν πρόσβαση μόνο μέσω της λειτουργίας των μελών και της λειτουργίας φίλων της τάξης. Αυτά τα προστατευμένα μέλη δεν μπορούν να αποκτήσουν πρόσβαση εκτός της κλάσης εκτός από την κατηγορία παιδιού (που αμέσως προέρχεται από αυτήν). Εξυπηρετεί τον περιορισμένο σκοπό στην κληρονομιά και κληρονομεί τις ιδιότητες με περιορισμένο τρόπο.
Το παρακάτω πρόγραμμα C ++ απεικονίζει την έννοια των προστατευόμενων προσδιοριστών πρόσβασης.
#include using namespace std; (int a, int b) {x = a; int = int; int = int; y = b; } άκυρη εμφάνιση () {cout <Στο παραπάνω παράδειγμα, η κλάση παιδιών κληρονομεί τις ιδιότητες της βασικής κλάσης επειδή τα στοιχεία δεδομένων δηλώνονται ως δημόσια ή προστατευμένα. Δεν θα ήταν εφικτό αν τα x και y είχαν δηλωθεί ως ιδιωτικά στη βασική κατηγορία.
Βασικές διαφορές μεταξύ ιδιωτικού και προστατευμένου σε C ++
- Η προστατευμένη λέξη-κλειδί μπορεί να χρησιμοποιηθεί για την οικοδόμηση μελών της τάξης που είναι ιδιωτικά στην τάξη τους, αλλά μπορούν να κληρονομηθούν και να χρησιμοποιηθούν από την παράγωγη κλάση. Αντίθετα, αυτό δεν είναι δυνατό κατά τη χρήση του ιδιωτικού, επειδή τα ιδιωτικά μέλη δεν μπορούν να κληρονομηθούν απευθείας στην κλάση που προκύπτει.
- Όταν η βασική κλάση κληρονομείται με τον προσδιορισμό ιδιωτικής πρόσβασης, δημιουργεί όλα τα δημόσια και προστατευμένα μέλη της βασικής κλάσης, τα ιδιωτικά μέλη της παράγωγης κλάσης. Αντιθέτως, αυτό δεν ισχύει για τους προστατευόμενους προσδιοριστές πρόσβασης.
συμπέρασμα
Οι ιδιωτικοί και προστατευμένοι είναι οι προσδιοριστές πρόσβασης που χρησιμοποιούνται για να ορίσουν διαφορετικά την ορατότητα της τάξης και των μελών της. Ωστόσο, η προστασία είναι πιο ευέλικτη από την ιδιωτική.