C Access Specifiers
Access specifiers, også kendt som adgangsmodifikatorer, er nøgleord, der bruges til at definere, hvilke dele af en klasse eller struktur der kan tilgås af andre dele af programmet. I C++ er der tre hovedtyper af adgangsmodifikatorer: public, private og protected.
Public Access Specifier
Den offentlige adgangsmodifikator (public) tillader adgang fra enhver del af programmet. Når en klasse eller struktur er deklareret offentligt, kan dens medlemmer tilgås og manipuleres uden begrænsninger. Dette gør det muligt for andre klasser og metoder at bruge og ændre værdierne af disse medlemmer.
Private Access Specifier
Den private adgangsmodifikator (private) begrænser adgangen til et medlemsområde til kun den samme klasse eller struktur, hvor det er deklareret. Dette betyder, at medlemmer, der er markeret som private, ikke kan tilgås eller manipuleres af andre klasser eller metoder. Dette sikrer en vis grad af sikkerhed og kontrol over klassemedlemmerne.
Protected Access Specifier
Den beskyttede adgangsmodifikator (protected) er en mellemting mellem offentlig og privat adgang. Medlemmer, der er markeret som beskyttede, kan tilgås inden for den samme klasse eller struktur samt af afledte klasser. Dette betyder, at beskyttede medlemmer kan bruges og ændres i både basisklassen og dens afledte klasser, men de er stadig ikke tilgængelige fra andre klasser eller metoder uden for hierarkiet.
Eksempler på adgangsmodifikatorer er nøgleord som:
- public
- private
- protected
Her er nogle eksempler på, hvordan adgangsmodifikatorer kan bruges:
public: | class MyClass { public: int publicMember;};int main() { MyClass obj; obj.publicMember = 10; // Tillader direkte adgang til publicMember} |
private: | class MyClass { private: int privateMember; public: void setPrivateMember(int value) { privateMember = value; // Bruger en offentlig metode til at ændre privatmedlemmet } int getPrivateMember() { return privateMember; // Bruger en offentlig metode til at få værdien af privatmedlemmet }};int main() { MyClass obj; obj.setPrivateMember(10); // Ændrer privatMember ved hjælp af offentlig metode int value = obj.getPrivateMember(); // Får værdien af privatMember ved hjælp af offentlig metode} |
protected: | class MyBaseClass { protected: int protectedMember;};class MyDerivedClass : public MyBaseClass { public: void accessProtectedMember() { protectedMember = 10; // Adgang til beskyttet medlem fra afledt klasse }};int main() { MyDerivedClass obj; obj.accessProtectedMember(); // Tilgår og ændrer det beskyttede medlem fra en afledt klasse} |
Som det kan ses, giver adgangsmodifikatorerne mulighed for at styre, hvordan medlemmer af klasser eller strukturer kan tilgås af andre dele af programmet. Ved at bruge disse adgangsmodifikatorer kan udviklere opretholde sikkerheden og organiseringen af deres kodelogik.
Forskel mellem public, private og protected
Forskellen mellem public, private og protected ligger i, hvem der har adgang til medlemmerne af en klasse eller struktur. Public- og private-medlemmer er klart adskilt og tilhører forskellige adgangsniveauer. Medlemmer markeret som public er offentligt tilgængelige for alle, mens medlemmer markeret som private kun kan tilgås af den samme klasse eller struktur.
Beskyttede medlemmer kan tilgås og bruges af både basisklassen og dens afledte klasser, men er skjult for andre dele af programmet. Denne adgangskontrol muliggør implementeringen af arv og polymorfisme i C++.
Sådan tilgår man private medlemmer af en klasse i C++
Normalt er private-medlemmer af en klasse ikke direkte tilgængelige uden for klassen. Dette er en grundlæggende funktion af encapsulation (indkapsling), som er en af de fundamentale principper i objektorienteret programmering. Dog er der visse undtagelser og alternativer til at omgå adgangsbegrænsningerne:
- Ved hjælp af public metoder: Klassemedlemmer markeret som private kan tilgås ved hjælp af offentlige metoder, der bruger disse private medlemmer internt. Dette giver en mere kontrolleret og sikker adgang til private medlemmer og giver også mulighed for yderligere validering og logik.
- Venskabserklæring: En klasse kan erklæres som en ven af en anden klasse ved hjælp af ven-nøgleordet. Dette giver den venklasse fuld adgang til alle medlemsområder i den befriendede klasse, herunder de private medlemmer.
Det er dog vigtigt at huske på, at omgåelse af private adgang kan føre til ukontrolleret adgang til og manipulering af klassemedlemmer, hvilket kan bryde med princippet om encapsulation og forårsage uventede fejl og fejl.
Eksempel: Brug af offentlig metode til at tilgå og ændre et privat medlem
class MyClass { private: int privateMember; public: void setPrivateMember(int value) { privateMember = value; } int getPrivateMember() { return privateMember; }};int main() { MyClass obj; obj.setPrivateMember(10); // Ændrer privatMember ved hjælp af offentlig metode int value = obj.getPrivateMember(); // Får værdien af privatMember ved hjælp af offentlig metode}
I dette eksempel bruger vi offentlige metoder, setPrivateMember() og getPrivateMember(), til at ændre og få værdien af det private medlem privateMember. Dette tillader os at bruge og manipulere det private medlem på en kontrolleret måde uden at bryde princippet om encapsulation.
Konklusion
Adgangsmodifikatorer i C++ giver udviklere mulighed for at styre og begrænse adgangen til klasser og strukturer. Ved at definere adgangsniveauer som offentlig, privat og beskyttet kan udviklere sikre sikkerheden og organiseringen af deres kode. Ved at bruge offentlige, private og beskyttede adgangsmodifikatorer i C++, er det muligt at opretholde denne organisation, sikkerhed og tilgængelighed af dine klassemedlemmer.
Ofte stillede spørgsmål
Hvad er access specifiers i C?
Hvad er forskellen mellem public, private og protected access specifiers i C?
Hvad er forskellen mellem protected og private access specifiers i C?
Hvad er forskellen mellem public og private access specifiers i C?
Hvad er nogle eksempler på brugen af access specifiers i C?
Hvordan kan private medlemmer af en klasse tilgås i C?
Hvad er forskellen mellem public, private og protected access specifiers i C++?
Hvad er forskellen mellem private og public access specifiers i C++?
Hvad er forskellen mellem private og protected access specifiers i C++?
Hvad er forskellen mellem protected, private og public access specifiers i C++?
Andre populære artikler: SQL Server SOUNDEX()-funktionen • JavaScript RegExp Reference • Bootstrap JS Popover Reference • Java Constructors • CSS Specificity – Forståelse af prioritering af CSS-regler • PHP end() Funktion – Hent sidste element af et array • R Nested Loops • PHP parse_ini_file() Funktion • PHP floor() Funktion • Java Declare Multiple Variables • HTML DOM Style overflow Property • Types of Statistical Studies • XML og XPath: En dybdegående gennemgang • NumPy Certification • Excel MODE-funktionen: Hvordan man finder mode i Excel • PHP json_encode() Funktion • C Memory Address • Python String rindex() Metode • Colors – British • jQuery remove() metode