Πρόσβαση στους τροποποιητές (Specifiers) σε C# με παραδείγματα προγραμμάτων
Τι είναι το Access Modifier (Specifier) στο C#;
Τροποποιητές πρόσβασης ή Προσδιοριστές Access σε C# είναι οι λέξεις-κλειδιά που χρησιμοποιούνται για να ορίσουν την ορατότητα μιας ιδιότητας ή μιας μεθόδου κλάσης. Χρησιμοποιείται όταν δεν θέλετε άλλα προγράμματα να βλέπουν τις ιδιότητες ή τις μεθόδους μιας κλάσης. Οι τροποποιητές πρόσβασης περιορίζουν την πρόσβαση έτσι ώστε άλλα προγράμματα να μην μπορούν να δουν τις ιδιότητες ή τις μεθόδους μιας κλάσης.
Υπάρχουν 6 τύποι τροποποιητών πρόσβασης στο C#:
- Private
- Δημόσιο
- Προστατευόμενη
- Εσωτερικός
- Προστατευμένο εσωτερικό
- Ιδιωτικό Προστατευμένο
Θα μάθουμε για τους κύριους τροποποιητές πρόσβασης στο C# με παραδείγματα προγραμμάτων όπως εξηγείται παρακάτω.
Τροποποιητές ιδιωτικής πρόσβασης σε C#
Όταν ο τροποποιητής ιδιωτικής πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτό σημαίνει ότι δεν είναι δυνατή η πρόσβαση σε αυτά τα μέλη από οποιοδήποτε εξωτερικό πρόγραμμα.
Παράδειγμα τροποποιητή ιδιωτικής πρόσβασης
Ας πάρουμε ένα παράδειγμα και ας δούμε τι συμβαίνει όταν χρησιμοποιούμε τον τροποποιητή ιδιωτικής πρόσβασης.
Ας τροποποιήσουμε τον τρέχοντα κώδικα στο αρχείο Tutorial.cs. Στη μέθοδο SetTutorial, ας αλλάξουμε τη δημόσια λέξη-κλειδί σε ιδιωτική.
Τώρα ας μεταβούμε στο αρχείο Program.cs. Θα παρατηρήσετε ότι υπάρχει μια κόκκινη σαθρή γραμμή κάτω από τη μέθοδο SetTutorial.
Εφόσον έχουμε πλέον δηλώσει τη μέθοδο SetTutorial ως ιδιωτική στην κλάση Tutorial, το Visual Studio το έχει εντοπίσει. Έχει πει στο χρήστη επισημαίνοντάς το ότι τώρα αυτή η μέθοδος δεν θα λειτουργεί από το αρχείο Program.cs.
Τροποποιητές δημόσιας πρόσβασης C#
Όταν ο τροποποιητής δημόσιας πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, σημαίνει ότι αυτά τα μέλη μπορούν να έχουν πρόσβαση από οποιοδήποτε εξωτερικό πρόγραμμα. Το έχουμε ήδη δει στα προηγούμενα παραδείγματα μας.
Παράδειγμα Τροποποιητή Δημόσιας Πρόσβασης
Εφόσον έχουμε ορίσει τις μεθόδους μας ως δημόσιες στην κλάση Tutorial, είναι δυνατή η πρόσβαση σε αυτές από το αρχείο Program.cs.
Προστατευμένοι τροποποιητές πρόσβασης σε C#
Όταν ο τροποποιητής προστατευμένης πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτό σημαίνει ότι αυτά τα μέλη μπορούν να έχουν πρόσβαση μόνο από κλάσεις που κληρονομήθηκαν από το ρεύμα τάξη. Αυτό θα εξηγηθεί με περισσότερες λεπτομέρειες στην κλάση Inheritance.
Τροποποιητές εσωτερικής πρόσβασης C#
Όταν ένας τροποποιητής εσωτερικής πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτά τα μέλη μπορούν να έχουν πρόσβαση μόνο από ένα εσωτερικό πρόγραμμα αλλά όχι από ένα εξωτερικό πρόγραμμα.
Κατασκευαστής C#
C# Οι κατασκευαστές χρησιμοποιούνται για την προετοιμασία των τιμών των πεδίων κλάσεων όταν δημιουργούνται τα αντίστοιχα αντικείμενα τους. Ένας κατασκευαστής είναι μια μέθοδος που έχει το ίδιο όνομα με αυτό της κλάσης. Εάν ένας κατασκευαστής ορίζεται σε μια κλάση, τότε θα παρέχει την πρώτη μέθοδο που καλείται όταν δημιουργείται ένα αντικείμενο. Ας υποθέσουμε ότι είχαμε μια τάξη που λέγεται Υπάλληλος. Η μέθοδος κατασκευής θα ονομαζόταν επίσης Employee().
Τα ακόλουθα βασικά πράγματα πρέπει να σημειωθούν σχετικά με τις μεθόδους κατασκευής
- Ο προεπιλεγμένος τροποποιητής πρόσβασης C# για τον κατασκευαστή πρέπει να γίνει δημόσιος.
- Δεν πρέπει να υπάρχει τύπος επιστροφής για τη μέθοδο κατασκευής.
Παράδειγμα C# Constructor
Ας δούμε τώρα πώς μπορούμε να ενσωματώσουμε τον χρήστη των κατασκευαστών στον κώδικά μας. Θα χρησιμοποιήσουμε κατασκευαστές για να αρχικοποιήσουμε τα πεδία TutorialID και TutorialName σε ορισμένες προεπιλεγμένες τιμές όταν δημιουργείται το αντικείμενο.
Βήμα 1) Το πρώτο βήμα είναι να δημιουργήσουμε τον κατασκευαστή για την τάξη Tutorial. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs.
Επεξήγηση κώδικα: -
- Προσθέτουμε πρώτα μια νέα μέθοδο που έχει το ίδιο όνομα με αυτό της κλάσης. Επειδή είναι το ίδιο όνομα με την κλάση, η C# το αντιμετωπίζει ως μέθοδο κατασκευής. Έτσι τώρα κάθε φορά που η μέθοδος κλήσης δημιουργεί ένα αντικείμενο αυτής της κλάσης, αυτή η μέθοδος θα καλείται από προεπιλογή.
- Στον κατασκευαστή Tutorial, ορίζουμε την τιμή του TutorialID σε 0 και το TutorialName σε "Προεπιλογή". Έτσι, κάθε φορά που δημιουργείται ένα αντικείμενο, αυτά τα πεδία θα έχουν πάντα αυτές τις προεπιλεγμένες τιμές.
Τώρα ας μεταβούμε στο αρχείο Program.cs και απλώς αφαιρούμε τη γραμμή, η οποία καλεί τη μέθοδο SetTutorial. Αυτό συμβαίνει επειδή θέλουμε απλώς να δούμε πώς λειτουργεί ο κατασκευαστής.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public Tutorial() { TutorialID=0; TutorialName="Default"; } public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Επεξήγηση κώδικα: -
- Το πρώτο βήμα είναι να δημιουργήσετε ένα αντικείμενο για την κλάση Tutorial. Αυτό γίνεται μέσω της λέξης κλειδιού «νέα».
- Χρησιμοποιούμε τη μέθοδο GetTutorial της τάξης Tutorial για να λάβουμε το TutorialName. Στη συνέχεια εμφανίζεται στην κονσόλα μέσω της μεθόδου Console.WriteLine.
Εάν ο παραπάνω κωδικός εισαχθεί σωστά και το πρόγραμμα εκτελεστεί, θα εμφανιστεί η ακόλουθη έξοδος.
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ότι ο κατασκευαστής είχε όντως κληθεί και ότι η τιμή του TutorialName ορίστηκε σε "Προεπιλογή".
Σημείωση: Εδώ η τιμή "προεπιλογή" λαμβάνεται από τον κατασκευαστή.
Σύνοψη
- Οι τροποποιητές πρόσβασης C# ή οι προσδιοριστές πρόσβασης χρησιμοποιούνται για τον καθορισμό της ορατότητας μιας ιδιότητας ή μιας μεθόδου κλάσης.
- Όταν ο τροποποιητής ιδιωτικής πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτό σημαίνει ότι δεν είναι δυνατή η πρόσβαση σε αυτά τα μέλη από οποιοδήποτε εξωτερικό πρόγραμμα.
- Όταν ο τροποποιητής δημόσιας πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, σημαίνει ότι αυτά τα μέλη μπορούν να έχουν πρόσβαση από οποιοδήποτε εξωτερικό πρόγραμμα.
- Όταν ο τροποποιητής προστατευμένης πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτό σημαίνει ότι αυτά τα μέλη είναι προσβάσιμα μόνο από κλάσεις που έχουν κληρονομηθεί από την τρέχουσα κλάση.
- Όταν ένας τροποποιητής εσωτερικής πρόσβασης είναι συνδεδεμένος είτε σε μια ιδιότητα είτε σε μια μέθοδο, αυτά τα μέλη μπορούν να έχουν πρόσβαση μόνο από ένα εσωτερικό πρόγραμμα αλλά όχι από ένα εξωτερικό πρόγραμμα.
- Οι κατασκευαστές C# χρησιμοποιούνται για την προετοιμασία των τιμών των πεδίων κλάσεων όταν δημιουργούνται τα αντίστοιχα αντικείμενα τους.