I denne opplæringen vil vi lære om tilgangsmodifikatorer for C ++ - klasser ved hjelp av eksempler. Tilgangsmodifikatorene til C ++ er offentlige, private og beskyttede.
En av hovedtrekkene til objektorienterte programmeringsspråk som C ++ er datahulling .
Data skjuler refererer til å begrense tilgangen til data medlemmer av en klasse. Dette er for å forhindre at andre funksjoner og klasser tukler med klassedataene.
Det er imidlertid også viktig å gjøre noen medlemsfunksjoner og medlemsdata tilgjengelige slik at de skjulte dataene kan manipuleres indirekte.
Tilgangsmodifikatorene til C ++ lar oss bestemme hvilke klassemedlemmer som er tilgjengelige for andre klasser og funksjoner, og hvilke som ikke er det.
For eksempel,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Her blir variablene pasientnummer og diagnose av Patient
klassen skjult ved hjelp av private
nøkkelordet, mens medlemsfunksjonene blir gjort tilgjengelige ved hjelp av public
nøkkelordet.
Typer C ++ tilgangsmodifikatorer
I C ++ er det 3 tilgangsmodifikatorer:
public
private
protected
offentlig tilgangsmodifikator
- Den
public
nøkkelordet brukes til å opprette offentlige medlemmer (data og funksjoner). - De offentlige medlemmene er tilgjengelige fra hvilken som helst del av programmet.
Eksempel 1: C ++ public Access Modifier
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Produksjon:
Skriv inn din alder: 20 Alder = 20
I dette programmet har vi opprettet en klasse med navnet Sample
, som inneholder en public
variabel alder og en public
funksjon displayAge()
.
I main()
har vi opprettet et objekt av Sample
klassen som heter obj1. Vi får deretter tilgang til de offentlige elementene direkte ved å bruke kodene obj.age
og obj.displayAge()
.
privat tilgangsmodifikator
- Den
private
nøkkelordet brukes til å opprette private medlemmer (data og funksjoner). - De private medlemmene er kun tilgjengelige fra klassen.
- Imidlertid kan venneklasser og vennefunksjoner få tilgang til private medlemmer.
Eksempel 2: C ++ privat tilgangsspesifikator
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Produksjon:
Skriv inn din alder: 20 Alder = 20
I main()
, objektet obj1 kan ikke direkte få tilgang til klassevariabelen alder.
// error cin>> obj1.age;
Vi kan bare indirekte manipulere alder gjennom den offentlige funksjonen displayAge()
, siden denne funksjonen tilordner alder til argumentet som sendes inn i den, dvs. funksjonsparameteren int a
.
beskyttet Access Modifier
Før vi lærer om protected
tilgangsspesifikatoren, må du sørge for at du vet om arv i C ++.
- Den
protected
nøkkelordet brukes til å lage beskyttede elementer (data og funksjons). - De beskyttede medlemmene er tilgjengelige i klassen og fra den avledede klassen.
Eksempel 3: C ++ beskyttet Access Specifier
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Produksjon:
Skriv inn din alder: 20 Alder = 20
Her ChildSample
er en arvelig klasse som er avledet fra Sample
. Variabel alder er angitt Sample
med protected
nøkkelordet.
Dette betyr at ChildSample
tilgang til alder siden Sample
er den overordnede klassen.
Vi ser dette da vi har tildelt verdien av alder i ChildSample
selv om alder er oppgitt i Sample
klassen.
Sammendrag: offentlig, privat og beskyttet
public
elementer kan nås av alle andre klasser og funksjoner.private
elementene er ikke tilgjengelige utenfor klassen de er deklarert i, bortsett fra avfriend
klasser og funksjoner.protected
elementene er akkurat somprivate
, bortsett fra at de kan nås av avledede klasser.
Spesifikatorer | Samme klasse | Avledet klasse | Utenfor klassen |
---|---|---|---|
public | Ja | Ja | Ja |
private | Ja | Nei | Nei |
protected | Ja | Ja | Nei |
Merk: Som standard er klassemedlemmer i C ++ private
, med mindre annet er spesifisert.