Ebben az oktatóanyagban példák segítségével megismerhetjük a C ++ osztályok hozzáférés-módosítóit. A C ++ hozzáférés-módosítói nyilvánosak, privátak és védettek.
Az objektumorientált programozási nyelvek, például a C ++ egyik fő jellemzője az adatok elrejtése .
Az adatok elrejtése az osztály adattagjaihoz való hozzáférés korlátozására utal. Ez megakadályozza, hogy más funkciók és osztályok megváltoztassák az osztály adatait.
Fontos azonban néhány tagfunkció és tagadat hozzáférhetővé tétele, hogy a rejtett adatokat közvetett módon lehessen kezelni.
A C ++ hozzáférés-módosítói lehetővé teszik számunkra, hogy meghatározzuk, mely osztálytagok érhetők el más osztályok és funkciók számára, és melyek nem.
Például,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Itt a pacientNumber és az Patient
osztály diagnózisa a private
kulcsszó segítségével elrejtésre kerül , míg a tagfüggvények a public
kulcsszóval érhetők el .
A C ++ hozzáférés módosítók típusai
A C ++ nyelven 3 hozzáférés-módosító létezik:
public
private
protected
nyilvános hozzáférés-módosító
- A
public
kulcsszó nyilvános tagok (adatok és függvények) létrehozására szolgál. - A nyilvánosság tagjai a program bármely részéről hozzáférhetők.
1. példa: C ++ nyilvános hozzáférés-módosító
#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; )
Kimenet:
Adja meg életkorát: 20 Kor = 20
Ebben a programban létrehoztunk egy nevű osztályt Sample
, amely public
változó életkort és public
függvényt tartalmaz displayAge()
.
A main()
hoztunk létre egy objektumot az Sample
osztály nevű obj1. Mi majd hozzáférést a nyilvánosság elemek segítségével közvetlenül a kódokat obj.age
és obj.displayAge()
.
privát hozzáférés-módosító
- A
private
kulcsszóval privát tagok (adatok és függvények) hozhatók létre. - A privát tagok csak az osztályon belül férhetnek hozzá.
- A baráti osztályok és a barát funkciók azonban hozzáférhetnek a privát tagokhoz.
2. példa: C ++ privát hozzáférési specifikátor
#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; )
Kimenet:
Adja meg életkorát: 20 Kor = 20
Ebben main()
az objektum objektum nem férhet hozzá közvetlenül az osztály változó korához.
// error cin>> obj1.age;
Csak közvetve manipulálhatjuk az életkort a nyilvános függvényen keresztül displayAge()
, mivel ez a függvény hozzárendeli az életkort a benne átadott argumentumhoz, azaz a függvény paraméterhez int a
.
védett Access Modifier
Mielőtt megtudnánk a protected
hozzáférési specifikátort, győződjön meg arról, hogy tud-e az öröklésről a C ++ nyelven.
- A
protected
kulcsszó védett tagok (adatok és függvény) létrehozására szolgál. - A védett tagok az osztályon belül és a származtatott osztályból érhetők el.
3. példa: C ++ védett hozzáférési specifikátor
#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; )
Kimenet:
Adja meg életkorát: 20 Kor = 20
Itt ChildSample
egy öröklött osztály származik Sample
. A változó életkor Sample
a protected
kulcsszóval van deklarálva .
Ez azt jelenti, hogy ChildSample
hozzáférhet az életkorhoz, mivel Sample
ez a szülőosztálya.
Ezt úgy látjuk, hogy hozzárendeltük az életkor értékét, ChildSample
annak ellenére, hogy az életkort deklarálták az Sample
osztályban.
Összegzés: nyilvános, magán és védett
public
az elemeket az összes többi osztály és funkció elérheti.private
Az elemekhez nem lehet hozzáférni azon osztályon kívül, amelyben deklarálták, kivévefriend
osztályok és függvények szerint.protected
Az elemek ugyanolyanok, mint azprivate
, kivéve, ha származtatott osztályok hozzáférhetnek hozzájuk.
Specifikátorok | Ugyanabba az osztályba | Származtatott osztály | Osztályon kívül |
---|---|---|---|
public | Igen | Igen | Igen |
private | Igen | Nem | Nem |
protected | Igen | Igen | Nem |
Megjegyzés: Alapértelmezés szerint a C ++ osztály tagjai private
, hacsak másképp nincs meghatározva.