Mi a különbség a C++ osztályok privát és védett tagjai között?

Mi A Kulonbseg A C Osztalyok Privat Es Vedett Tagjai Kozott



A C++ egy objektum-orientált programozási (OOP) nyelv, amely egy olyan mechanizmust biztosít, amely az adatok és a funkciók egyetlen entitásba, úgynevezett osztályba foglalható. Az osztály egyik lényeges tulajdonsága, hogy meg lehet adni a hozzáférési szintet tagjai számára. Az objektum-orientált programozásban hozzáférési specifikációk az osztály mezőinek és metódusainak láthatóságának és elérhetőségének szabályozására szolgálnak. Védett , nyilvános , és magán A hozzáférési szintek a hozzáférési szintek három alapvető típusa a C++ nyelvben.

Ebben az írásban megvitatjuk a két fő közötti különbséget hozzáférés-specifikátor s, magán és védett egy C++ osztály tagjai.

Privát hozzáférés-specifikátor

Magántagok a '' kulcsszó használatával deklarálják magán ‘. A privát hozzáférés-specifikátor csak magára az osztályra korlátozza az osztálytagok hozzáférését. Az osztályon kívüli kód nem férhet hozzá és nem módosíthatja a privát tagokat. Ez azt jelenti, hogy csak az osztályban deklarált metódusok érhetik el és működhetnek rajta magántagok , még a származtatott osztályok sem férhetnek hozzá magántagok . Gyakori felhasználása magántagok egy osztály helyes működésének biztosítása. Magántagok Az osztály adatainak beágyazására és az absztrakció szintjének biztosítására szolgálnak az osztály felhasználói számára.







#include
segítségével névtér std ;

osztály játékos {

magán :
karakterlánc neve ;
int kor ;

nyilvános :
üres getPlayer ( )
{
cout << 'Írja be a nevet:' ;
enni >> név ;
cout << 'Írja be az életkort:' ;
enni >> kor ;
}
üres showPlayer ( )
{
cout << 'Név:' << név << endl ;
cout << 'Kor:' << kor << endl ;
}
} ;

int fő- ( )
{
játékos pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

Visszatérés 0 ;
}

A fenti kódban a nyilvános tag módszereket használjuk getPlayer() és showPlayer() hogy hozzáférjen a kettőhöz magán tagok név és kor . A getPlayer() funkció megkapja a bemenetet a felhasználóktól, és megjeleníti a képernyőn keresztül showPlayer() funkció.



Kimenet







Védett hozzáférés-specifikátor

Védett tagok egy osztályhoz mind a származtatott osztályok, mind magának az osztálynak a tagfüggvényei hozzáférhetnek. Védett tagok arra szolgálnak, hogy bizonyos szintű hozzáférést biztosítsanak a származtatott osztályokhoz anélkül, hogy a megvalósítás részleteit a külvilág elé tárnák. Védett tagok a '' kulcsszó használatával deklarálják védett ' és a kettőspont (:) karakter. Védett tagok lehetővé teszi egy osztály kiterjesztését és módosítását anélkül, hogy veszélyeztetné integritását. Egy származtatott osztály használhatja védett tagjai egy alaposztály viselkedésének finomításához vagy testreszabásához.

Itt van egy példa egy osztályra védett tagjai :



#include
névtér használata std;

osztályú játékos {
magán:
karakterlánc neve;
int kor;

védett:
int célok;

nyilvános:
érvénytelen getPlayer ( )
{
cout <> név;
cout <> kor;
}
void showPlayer ( )
{
cout << 'Név:' << név << endl;
cout << 'Kor:' << kor << endl;
}
} ;

osztály játékos1 : nyilvános játékos {

magán:
húrország;

nyilvános:
érvénytelen kitűzött_célok ( int g )
{
célok = g;
}
érvénytelen getPlayer1 ( )
{
getPlayer ( ) ;
cout <> ország;
}
érvénytelen showPlayer1 ( )
{
cout << 'célok:' << célokat << endl;
showPlayer ( ) ;
cout << 'Ország: ' << ország << endl;
}
} ;

int fő ( )
{
játékos1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

Visszatérés 0 ;
}

A játékos osztály kettőből áll magántagok , név és kor , egy védett tag, célokat , és magán tagokat a belsejében használják fel nyilvános tagi funkciók, getPlayer() és showPlayer() . Két osztály van, játékos és játékos1 , mindkettő alaposztály. Egy magán tag, ország , és három nyilvános tag módszerek alkotják a játékos1 osztály. A meghatározott célok() a védett tag megváltoztatására szolgál gólok' érték. getPlayer1() hívja a getPlayer() tag funkciója a játékos osztályba, miközben lekéri az ország bemeneti adatait. Ehhez hasonló, showPlayer1() hívja a showPlayer() tag függvényt és kiírja a célokat és ország értékeket.

Kimenet

Különbség a C++ osztályok privát és védett tagjai között

Az alábbiakban felsorolunk néhány fő különbséget Magán és Védett a C++ osztályok tagjai.

1: Hatáskör és funkcionalitás

A hozzáférés-specifikátorok használatának mérlegelésekor nagyon fontos alaposan átgondolni a hatálya és funkcionalitás a programból. A privát hozzáférés-specifikátor a legmagasabb szintű biztonságot nyújtja, és elkerüli a változókhoz és módszerekhez való nem kívánt hozzáférést. Másrészt a védett hozzáférés-specifikátor szélesebb körű hozzáférést és rugalmasságot kínál, ami elengedhetetlen, ha a származtatott osztályokat egy alaposztályból örököljük.

2: Hozzáférési szint

A fő különbség a között magán és védett tagjai az általuk biztosított hozzáférési szint. Védett tagok az osztály származtatott osztályai és tagfüggvényei által egyaránt elérhetők, de magán tagokat csak az osztály tagfüggvényei szerezhetnek be.

3: Az osztály beágyazása

Egy másik lényeges különbség között magán és védett tagok szerepe az osztály beágyazottságának fenntartásában. Az adatok elkülönítése és az osztály felhasználóinak bizonyos szintű absztrakció biztosítása érdekében, magán tagjai munkaviszonyban állnak. Védett tagokat alkalmaznak az öröklődési struktúra kezelésére, és hozzáférést biztosítanak az alaposztály tagjaihoz származtatott osztályokon keresztül.

Végső gondolatok

Magán és védett tagjai ez a két alapvető hozzáférési szint a C++ osztályban. A magán Az access specifier minden külső felhasználó számára elérhetetlenné teszi az osztálytagokat, és az információk tárolására szolgál magán osztályon belül. Ezzel szemben a védett A hozzáférés-specifikátor csak származtatott osztályok által teszi lehetővé az osztálytagokhoz való hozzáférést, az alaposztály-funkcionalitás biztosítására szolgál, és lehetővé teszi a módosítást az alaposztály viselkedésének megváltoztatása nélkül. Az osztály tagjainak hozzáférési szintje döntő szerepet játszik az osztály beágyazottságának fenntartásában és az osztály felhasználóinak hozzáférési szintjének biztosításában.