Care este diferența dintre membrii privați și protejați ai claselor C++

Care Este Diferenta Dintre Membrii Privati Si Protejati Ai Claselor C



C++ este un limbaj de programare orientată pe obiecte (OOP) care oferă un mecanism de încapsulare a datelor și funcțiilor într-o singură entitate numită clasă. Una dintre caracteristicile esențiale ale clasei este capacitatea de a specifica nivelul de acces pentru membrii săi. În programarea orientată pe obiecte, specificatorii de acces sunt folosite pentru a controla vizibilitatea și accesibilitatea câmpurilor și metodelor unei clase. Protejat , public , și privat nivelurile de acces sunt cele trei tipuri de bază de niveluri de acces în C++.

În acest articol, vom discuta despre diferența dintre cele două principale specificatorul de acces s, privat și protejat membri ai unei clase C++.

Specificator de acces privat

Membrii privați sunt declarate folosind cuvântul cheie „ privat ‘. The specificator de acces privat limitează accesul la membrii clasei doar la clasa în sine. Codul din afara clasei nu poate accesa sau modifica un membru privat. Asta înseamnă că numai metodele declarate în clasă pot accesa și opera pe membri privați , nici măcar clasele derivate nu pot accesa membri privați . O utilizare comună a membri privați este de a asigura funcţionarea corectă a unei clase. Membrii privați sunt folosite pentru a încapsula datele clasei și pentru a oferi un nivel de abstractizare utilizatorilor clasei.







#include
folosind spatiu de nume std ;

clasă jucător {

privat :
nume șir ;
int vârstă ;

public :
gol getPlayer ( )
{
cout << 'Introdu numele: ' ;
mâncând >> Nume ;
cout << „Introduceți vârsta:” ;
mâncând >> vârstă ;
}
gol showPlayer ( )
{
cout << 'Nume: ' << Nume << endl ;
cout << 'Vârsta:' << vârstă << endl ;
}
} ;

int principal ( )
{
jucător pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

întoarcere 0 ;
}

În codul de mai sus, folosim metodele membrilor publici getPlayer() și showPlayer() pentru a accesa cele două privat membrii Nume și vârstă . The getPlayer() funcția primește intrarea de la utilizatori și o afișează pe ecran prin showPlayer() funcţie.



Ieșire







Specificator de acces protejat

Membrii protejați ale unei clase pot fi accesate atât de clasele derivate, cât și de funcțiile membre ale clasei în sine. Membrii protejați sunt folosite pentru a oferi un nivel de acces la clasele derivate fără a expune detaliile implementării lumii exterioare. Membrii protejați sunt declarate folosind cuvântul cheie „ protejat ' si două puncte (:) caracter. Membrii protejați permite extinderea și modificarea unei clase, fără a-i compromite integritatea. O clasă derivată poate folosi membri protejati pentru a rafina sau a personaliza comportamentul unei clase de bază.

Iată un exemplu de clasă cu membri protejati :



#include
folosind namespace std;

jucător de clasă {
privat:
nume șir;
int vârsta;

protejat:
int obiective;

public:
void getPlayer ( )
{
cout <> Nume;
cout <> vârstă;
}
void showPlayer ( )
{
cout << 'Nume: ' << Nume << endl;
cout << 'Vârsta:' << vârstă << endl;
}
} ;

class player1 : jucător public {

privat:
țara șirului;

public:
void set_goals ( int g )
{
obiective = g;
}
void getPlayer1 ( )
{
getPlayer ( ) ;
cout <> țară;
}
void showPlayer1 ( )
{
cout << 'obiective:' << obiective << endl;
showPlayer ( ) ;
cout << 'Țară: ' << țară << endl;
}
} ;

int principal ( )
{
player1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

întoarcere 0 ;
}

The jucător clasa cuprinde două membri privați , Nume și vârstă , unu protejat membru, obiective , și privat membrii sunt utilizați în interiorul public funcții de membru, getPlayer() și showPlayer() . Sunt două clase, jucător și jucător 1 , ambele fiind clase de bază. unu privat membru, țară , și trei public metodele membre alcătuiesc jucător 1 clasă. Obiective stabilite() este folosit pentru a schimba membrul protejat goluri’ valoare. getPlayer1() apelează la getPlayer() funcția de membru al jucător clasă în timp ce se regăsește în plus intrarea pentru țară. Similar cu aceasta, showPlayer1() apelează la showPlayer() funcția membru și tipărește obiective și țară valorile.

Ieșire

Diferența dintre membrii privați și protejați ai claselor C++

Aici sunt enumerate câteva dintre diferențele cheie între Privat și Protejat membri ai claselor C++.

1: Domeniu de aplicare și funcționalitate

Când luați în considerare utilizarea specificatorilor de acces, este esențial să vă gândiți cu atenție la domeniul de aplicare și funcţionalitate a programului. A specificator de acces privat oferă cel mai înalt nivel de securitate și evită accesul neintenționat la variabile și metode. Pe de altă parte, a specificatorul de acces protejat oferă o gamă mai extinsă de accesibilitate și flexibilitate, ceea ce este esențial atunci când intenționați să moșteniți clase derivate dintr-o clasă de bază.

2: Nivel de acces

Principala diferență între privat și membri protejati este nivelul de acces pe care îl oferă. Protejat membrii pot fi accesibili atât prin clasele derivate ale clasei, cât și prin funcțiile membre, dar privat membrii pot fi obținuți numai prin funcțiile de membru ale clasei.

3: Încapsularea clasei

O altă diferență crucială între privat și protejat membrii este rolul lor în menținerea încapsulării clasei. Pentru a izola datele și a oferi utilizatorilor clasei un anumit nivel de abstractizare, privat membrii sunt angajati. Protejat membrii sunt angajați pentru a gestiona structura moștenirii și pentru a oferi acces la membrii clasei de bază prin clase derivate.

Gânduri finale

Privat și membri protejati sunt cele două niveluri de acces esențiale din clasa C++. The privat Specificatorul de acces face membrii clasei inaccesibili pentru toți utilizatorii externi și este folosit pentru a păstra informații privat în cadrul clasei. În contrast, a protejat Specificatorul de acces permite accesul la membrii clasei numai prin clasele derivate, este folosit pentru a furniza funcționalitatea clasei de bază și permite modificarea fără a schimba comportamentul clasei de bază. Nivelul de acces al membrilor clasei joacă un rol crucial în menținerea încapsulării clasei și în furnizarea unui nivel de acces utilizatorilor clasei.