Hvad er forskellen mellem private og beskyttede medlemmer af C++-klasser

Hvad Er Forskellen Mellem Private Og Beskyttede Medlemmer Af C Klasser



C++ er et objektorienteret programmeringssprog (OOP), der giver en mekanisme til at indkapsle data og funktioner i en enkelt enhed kaldet en klasse. En af klassens væsentlige funktioner er evnen til at specificere adgangsniveauet for dens medlemmer. I objektorienteret programmering, adgangsspecifikationer bruges til at kontrollere synligheden og tilgængeligheden af ​​en klasses felter og metoder. Beskyttet , offentlig , og privat adgangsniveauer er de tre grundlæggende typer af adgangsniveauer i C++.

I denne skrivning vil vi diskutere forskellen mellem de to vigtigste adgangsspecifikation s, privat og beskyttet medlemmer af en C++ klasse.

Specifikation for privat adgang

Private medlemmer er erklæret ved hjælp af søgeordet ' privat ’. Det privat adgangsspecifikation begrænser adgangen til klassemedlemmer til kun klassen selv. Kode uden for klassen kan ikke få adgang til eller ændre et privat medlem. Det betyder, at kun de metoder, der er erklæret i klassen, kan få adgang til og operere på private medlemmer , ikke engang afledte klasser kan få adgang private medlemmer . En almindelig brug af private medlemmer er at sikre korrekt drift af en klasse. Private medlemmer bruges til at indkapsle klassedata og give et abstraktionsniveau til brugerne af klassen.







#include
ved brug af navneområde std ;

klasse spiller {

privat :
strengnavn ;
int alder ;

offentlig :
ugyldig getPlayer ( )
{
cout << 'Indtast navn:' ;
spise >> navn ;
cout << 'Indtast alder: ' ;
spise >> alder ;
}
ugyldig showPlayer ( )
{
cout << 'Navn: ' << navn << endl ;
cout << 'Alder:' << alder << endl ;
}
} ;

int vigtigste ( )
{
spiller pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

Vend tilbage 0 ;
}

I koden ovenfor bruger vi de offentlige medlemsmetoder getPlayer() og showPlayer() for at få adgang til de to privat medlemmer' navn og alder . Det getPlayer() funktion får input fra brugerne og viser det på skærmen via showPlayer() fungere.



Produktion







Protected Access Specifier

Beskyttede medlemmer af en klasse kan tilgås af både de afledte klasser og medlemsfunktionerne i selve klassen. Beskyttede medlemmer bruges til at give et niveau af adgang til de afledte klasser uden at udsætte implementeringsdetaljerne for omverdenen. Beskyttede medlemmer er erklæret ved hjælp af søgeordet ' beskyttet ' og kolon (:) Karakter. Beskyttede medlemmer tillade en klasse at blive udvidet og ændret uden at kompromittere dens integritet. En afledt klasse kan bruge beskyttede medlemmer at forfine eller tilpasse adfærden for en basisklasse.

Her er et eksempel på en klasse med beskyttede medlemmer :



#include
bruger navneområde std;

klassespiller {
privat:
streng navn;
int alder;

beskyttet:
int mål;

offentlig:
ugyldig getPlayer ( )
{
cout <> navn;
cout <> alder;
}
ugyldig showPlayer ( )
{
cout << 'Navn: ' << navn << endl;
cout << 'Alder:' << alder << endl;
}
} ;

klassespiller1: offentlig spiller {

privat:
streng land;

offentlig:
void set_goals ( int g )
{
mål = g;
}
ugyldig getPlayer1 ( )
{
getPlayer ( ) ;
cout <> Land;
}
ugyldig showPlayer1 ( )
{
cout << 'mål:' << mål << endl;
showPlayer ( ) ;
cout << 'Land: ' << Land << endl;
}
} ;

int main ( )
{
spiller1 pl;
pl.sæt_mål ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

Vend tilbage 0 ;
}

Det spiller klasse består af to private medlemmer , navn og alder , en beskyttet medlem, mål , og privat medlemmer udnyttes inde i offentlig medlemsfunktioner, getPlayer() og showPlayer() . Der er to klasser, spiller og spiller 1 , som begge er basisklasser. En privat medlem, Land , og tre offentlig medlem metoder udgør spiller 1 klasse. Sætte mål() bruges til at ændre det beskyttede medlem mål' værdi. getPlayer1() kalder getPlayer() medlemsfunktion af spiller klasse, samtidig med at der hentes input for landet. I lighed med dette, showPlayer1() kalder showPlayer() medlemsfunktion og udskriver mål og Land værdier.

Produktion

Forskellen mellem private og beskyttede medlemmer af C++-klasser

Her er angivet nogle af de vigtigste forskelle mellem Privat og Beskyttet medlemmer af C++ klasser.

1: Omfang og funktionalitet

Når man overvejer brugen af ​​adgangsspecifikationer, er det afgørende at tænke grundigt over omfang og funktionalitet af programmet. EN privat adgangsspecifikation giver det højeste niveau af sikkerhed og undgår utilsigtet adgang til variabler og metoder. På den anden side, en specifikator for beskyttet adgang tilbyder et mere omfattende udvalg af tilgængelighed og fleksibilitet, hvilket er vigtigt, når man planlægger at arve afledte klasser fra en basisklasse.

2: Adgangsniveau

Den væsentligste forskel mellem privat og beskyttede medlemmer er det adgangsniveau, de giver. Beskyttet medlemmer kan være tilgængelige for både klassens afledte klasser og medlemsfunktioner, men privat medlemmer kan kun opnås af klassens medlemsfunktioner.

3: Klassens indkapsling

En anden afgørende forskel mellem privat og beskyttet medlemmer er deres rolle i at opretholde klassens indkapsling. For at isolere dataene og give klassens brugere et vist abstraktionsniveau, privat medlemmer er ansat. Beskyttet medlemmer er ansat til at administrere arvestrukturen og give adgang til basisklassemedlemmer efter afledte klasser.

Afsluttende tanker

Privat og beskyttede medlemmer er de to væsentlige adgangsniveauer i C++-klassen. Det privat access specifier gør klassemedlemmer utilgængelige for alle eksterne brugere, og den bruges til at opbevare information privat inden for klassen. I modsætning hertil, en beskyttet adgangsspecifikation tillader kun adgang til klassemedlemmer af afledte klasser, bruges til at give basisklassefunktionalitet og tillader modifikation uden at ændre basisklassens adfærd. Klassemedlemmernes adgangsniveau spiller en afgørende rolle for at opretholde klassens indkapsling og give et niveau af adgang til klassens brugere.