Wat is het verschil tussen particuliere en beschermde leden van C++-klassen

Wat Is Het Verschil Tussen Particuliere En Beschermde Leden Van C Klassen



C++ is een objectgeoriënteerde programmeertaal (OOP) die een mechanisme biedt om gegevens en functies in te kapselen in een enkele entiteit die een klasse wordt genoemd. Een van de essentiële kenmerken van de klasse is de mogelijkheid om het toegangsniveau voor haar leden te specificeren. Bij objectgeoriënteerd programmeren, toegangsspecificaties worden gebruikt om de zichtbaarheid en toegankelijkheid van de velden en methoden van een klasse te regelen. Beschermd , openbaar , En privaat toegangsniveaus zijn de drie basistypen toegangsniveaus in C++.

In dit artikel zullen we het verschil tussen de twee belangrijkste bespreken toegangsspecificatie S, privaat En beschermd leden van een C++-klasse.

Privé-toegangsspecificatie

Privé leden worden gedeclareerd met het trefwoord ' privaat ‘. De persoonlijke toegangsspecificatie beperkt de toegang tot klasleden tot alleen de klas zelf. Code buiten de klas kan een privélid niet openen of wijzigen. Dat betekent dat alleen de methoden die in de klasse zijn gedeclareerd, toegang hebben tot en werken op de particuliere leden , zelfs geen afgeleide klassen hebben toegang particuliere leden . Een algemeen gebruik van particuliere leden is om de correcte werking van een klasse te verzekeren. Privé leden worden gebruikt om de klassegegevens in te kapselen en een abstractieniveau te bieden aan de gebruikers van de klasse.







#include
gebruik makend van naamruimte soa ;

klas speler {

privaat :
tekenreeks naam ;
int leeftijd ;

openbaar :
leegte krijgPlayer ( )
{
cout << 'Voer naam in: ' ;
aan het eten >> naam ;
cout << 'Voer leeftijd in: ' ;
aan het eten >> leeftijd ;
}
leegte showPlayer ( )
{
cout << 'Naam: ' << naam << eindel ;
cout << 'Leeftijd: ' << leeftijd << eindel ;
}
} ;

int voornaamst ( )
{
speler mv ;
mv. krijgPlayer ( ) ;
mv. showPlayer ( ) ;

opbrengst 0 ;
}

In de bovenstaande code gebruiken we de methoden voor openbare leden haalPlayer() En showPlayer() om toegang te krijgen tot de twee privaat leden naam En leeftijd . De haalPlayer() functie krijgt de input van de gebruikers en geeft deze weer op het scherm via showPlayer() functie.



Uitgang







Beveiligde toegangsspecificatie

Beschermde leden van een klasse is toegankelijk voor zowel de afgeleide klassen als de lidfuncties van de klasse zelf. Beschermde leden worden gebruikt om een ​​toegangsniveau tot de afgeleide klassen te bieden zonder de implementatiedetails aan de buitenwereld bloot te stellen. Beschermde leden worden gedeclareerd met het trefwoord ' beschermd ' en de dubbele punt (:) karakter. Beschermde leden toestaan ​​dat een klasse wordt uitgebreid en gewijzigd, zonder de integriteit ervan in gevaar te brengen. Een afgeleide klasse kan gebruiken beschermde leden om het gedrag van een basisklasse te verfijnen of aan te passen.

Hier is een voorbeeld van een klas met beschermde leden :



#include
namespace std; gebruiken;

klasse speler {
privaat:
tekenreeks naam;
int leeftijd;

beschermd:
int doelen;

openbaar:
ongeldige getPlayer ( )
{
cout <> naam;
cout <> leeftijd;
}
ongeldige showPlayer ( )
{
cout << 'Naam: ' << naam << einde;
cout << 'Leeftijd: ' << leeftijd << einde;
}
} ;

class player1 : openbare speler {

privaat:
tekenreeks land;

openbaar:
ongeldige set_goals ( int g )
{
doelen = g;
}
ongeldig getPlayer1 ( )
{
krijgPlayer ( ) ;
cout <> land;
}
ongeldig showPlayer1 ( )
{
cout << 'doelen: ' << doelen << einde;
showPlayer ( ) ;
cout << 'Land: ' << land << einde;
}
} ;

int hoofd ( )
{
speler1 mv;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

opbrengst 0 ;
}

De speler klasse bestaat uit twee particuliere leden , naam En leeftijd , een beschermd lid, doelen , En privaat leden worden gebruikt in de openbaar lid functies, haalPlayer() En showPlayer() . Er zijn twee klassen, speler En speler1 , die beide basisklassen zijn. Een privaat lid, land , en drie openbaar lidmethoden vormen de speler1 klas. Gestelde doelen() wordt gebruikt om het beschermde lid te wijzigen doelen' waarde. haalPlayer1() roept de haalPlayer() ledenfunctie van de speler class terwijl u bovendien de invoer voor het land ophaalt. vergelijkbaar met dit, toonPlayer1() roept de showPlayer() lid functie en drukt de doelen En land waarden.

Uitgang

Verschil tussen particuliere en beschermde leden van C++-klassen

Hier zijn enkele van de belangrijkste verschillen tussen Privaat En Beschermd leden van C++-klassen.

1: Reikwijdte en functionaliteit

Bij het overwegen van het gebruik van toegangsspecificaties, is het cruciaal om goed na te denken over de domein En functionaliteit van het programma. A persoonlijke toegangsspecificatie biedt het hoogste beveiligingsniveau en vermijdt onbedoelde toegang tot variabelen en methoden. Aan de andere kant, een beveiligde toegangsspecificatie biedt een uitgebreider scala aan toegankelijkheid en flexibiliteit, wat essentieel is bij het plannen om afgeleide klassen van een basisklasse te erven.

2: Toegangsniveau

Het belangrijkste verschil tussen privaat En beschermde leden is het toegangsniveau dat ze bieden. Beschermd leden kunnen toegankelijk zijn via zowel de afgeleide klassen van de klasse als de lidfuncties, maar privaat leden kunnen alleen worden verkregen door de lidfuncties van de klasse.

3: Inkapseling van de klas

Nog een cruciaal verschil tussen privaat En beschermd leden is hun rol bij het handhaven van de inkapseling van de klas. Om de gegevens te isoleren en de gebruikers van de klas een abstractieniveau te bieden, privaat leden zijn in dienst. Beschermd leden worden ingezet om de overervingsstructuur te beheren en toegang te verlenen aan leden van de basisklasse door middel van afgeleide klassen.

Laatste gedachten

Privaat En beschermde leden zijn de twee essentiële toegangsniveaus in de C++-klasse. De privaat toegangsspecificatie maakt klasleden ontoegankelijk voor alle externe gebruikers en wordt gebruikt om informatie te bewaren privaat binnen de klas. Daarentegen een beschermd toegangsspecificatie staat alleen toegang toe aan klasseleden door afgeleide klassen, wordt gebruikt om basisklassefunctionaliteit te bieden en staat wijziging toe zonder het gedrag van de basisklasse te veranderen. Het toegangsniveau van de klasleden speelt een cruciale rol bij het handhaven van de inkapseling van de klas en het bieden van een toegangsniveau aan de gebruikers van de klas.