Vad är skillnaden mellan privata och skyddade medlemmar i C++-klasser

Vad Ar Skillnaden Mellan Privata Och Skyddade Medlemmar I C Klasser



C++ är ett objektorienterat programmeringsspråk (OOP) som tillhandahåller en mekanism för att kapsla in data och funktioner i en enda enhet som kallas en klass. En av klassens väsentliga egenskaper är möjligheten att specificera åtkomstnivån för sina medlemmar. I objektorienterad programmering, åtkomstspecifikationer används för att kontrollera synligheten och tillgängligheten för en klasss fält och metoder. Skyddad , offentlig , och privat åtkomstnivåer är de tre grundläggande typerna av åtkomstnivåer i C++.

I den här artikeln kommer vi att diskutera skillnaden mellan de två huvudsakliga åtkomstspecifikation s, privat och skyddad medlemmar i en C++-klass.

Specifierare för privat åtkomst

Privata medlemmar deklareras med nyckelordet ' privat ’. De specificerar privat åtkomst begränsar åtkomst till klassmedlemmar till endast klassen själv. Kod utanför klassen kan inte komma åt eller ändra en privat medlem. Det betyder att endast de metoder som deklarerats i klassen kan komma åt och fungera på privata medlemmar , inte ens härledda klasser kan komma åt privata medlemmar . En vanlig användning av privata medlemmar är att säkerställa att en klass fungerar korrekt. Privata medlemmar används för att kapsla in klassdata och ge en abstraktionsnivå till användarna av klassen.







#include
använder sig av namnutrymme std ;

klass spelare {

privat :
strängens namn ;
int ålder ;

offentlig :
tomhet getPlayer ( )
{
cout << 'Skriv namn: ' ;
äter >> namn ;
cout << 'Ange ålder: ' ;
äter >> ålder ;
}
tomhet showPlayer ( )
{
cout << 'Namn: ' << namn << endl ;
cout << 'Ålder: ' << ålder << endl ;
}
} ;

int huvud ( )
{
spelare pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

lämna tillbaka 0 ;
}

I koden ovan använder vi de offentliga medlemsmetoderna getPlayer() och showPlayer() för att komma åt de två privat medlemmars namn och ålder . De getPlayer() funktionen får input från användarna och visar den på skärmen via showPlayer() fungera.



Produktion







Protected Access Specifier

Skyddade medlemmar av en klass kan nås av både de härledda klasserna och medlemsfunktionerna för själva klassen. Skyddade medlemmar används för att ge en nivå av åtkomst till de härledda klasserna utan att exponera implementeringsdetaljerna för omvärlden. Skyddade medlemmar deklareras med nyckelordet ' skyddad ' och den kolon (:) karaktär. Skyddade medlemmar tillåta att en klass utökas och modifieras, utan att kompromissa med dess integritet. En härledd klass kan använda skyddade medlemmar för att förfina eller anpassa beteendet för en basklass.

Här är ett exempel på en klass med skyddade medlemmar :



#include
använder namnutrymme std;

klassspelare {
privat:
strängnamn;
int ålder;

skyddad:
int mål;

offentlig:
ogiltig getPlayer ( )
{
cout <> namn;
cout <> ålder;
}
ogiltig showPlayer ( )
{
cout << 'Namn: ' << namn << endl;
cout << 'Ålder: ' << ålder << endl;
}
} ;

klass spelare1: offentlig spelare {

privat:
sträng land;

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

int main ( )
{
spelare1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

lämna tillbaka 0 ;
}

De spelare klass består av två privata medlemmar , namn och ålder , ett skyddad medlem, mål , och privat medlemmar används inuti offentlig medlemsfunktioner, getPlayer() och showPlayer() . Det finns två klasser, spelare och spelare 1 , som båda är basklasser. Ett privat medlem, Land , och tre offentlig medlem metoder utgör spelare 1 klass. Uppsatta mål() används för att byta den skyddade delen mål' värde. getPlayer1() kallar getPlayer() medlem funktion av spelare klass samtidigt som man hämtar indata för landet. I likhet med detta, showPlayer1() kallar showPlayer() medlemsfunktion och skriver ut mål och Land värden.

Produktion

Skillnaden mellan privata och skyddade medlemmar i C++-klasser

Här listas några av de viktigaste skillnaderna mellan Privat och Skyddad medlemmar i C++-klasser.

1: Omfattning och funktionalitet

När man överväger användningen av åtkomstspecifikationer är det viktigt att tänka noga på omfattning och funktionalitet av programmet. A specificerar privat åtkomst ger den högsta säkerhetsnivån och undviker oavsiktlig tillgång till variabler och metoder. Å andra sidan, a specificerad skyddad åtkomst erbjuder ett mer omfattande utbud av tillgänglighet och flexibilitet, vilket är viktigt när man planerar att ärva härledda klasser från en basklass.

2: Tillgångsnivå

Den största skillnaden mellan privat och skyddade medlemmar är åtkomstnivån de ger. Skyddad medlemmar kan vara tillgängliga för både klassens härledda klasser och medlemsfunktioner, men privat medlemmar kan endast erhållas av klassens medlemsfunktioner.

3: Klassens inkapsling

En annan avgörande skillnad mellan privat och skyddad medlemmar är deras roll i att upprätthålla klassens inkapsling. För att isolera data och ge klassens användare en viss abstraktionsnivå, privat medlemmar är anställda. Skyddad medlemmar är anställda för att hantera arvsstrukturen och ge tillgång till basklassmedlemmar genom härledda klasser.

Slutgiltiga tankar

Privat och skyddade medlemmar är de två väsentliga åtkomstnivåerna i klassen C++. De privat access specifier gör klassmedlemmar otillgängliga för alla externa användare, och den används för att lagra information privat inom klassen. Däremot a skyddad access specifier tillåter åtkomst till klassmedlemmar endast av härledda klasser, används för att tillhandahålla basklassfunktionalitet och tillåter modifiering utan att ändra basklassens beteende. Klassmedlemmarnas åtkomstnivå spelar en avgörande roll för att upprätthålla klassens inkapsling och ge en nivå av åtkomst till klassens användare.