Tablica usporedbe
Osnova za usporedbu | Privatna | zaštićen |
---|---|---|
Nasljeđivanje svojstva na izvedenu klasu | Izvedena klasa ne može pristupiti privatnim članovima osnovne klase. | Izvedena klasa može pristupiti članovima koji su zaštićeni osnovnom klasom. |
Pristupačnost | Privatni članovi klase su nedostupni izvan opsega razreda. | Zaštićeni članovi klase su nedostupni izvan opsega razreda osim klase izvedene odmah. |
Dostupno iz vlastitog razreda | Da | Da |
Dostupno iz izvedene klase | Ne | Da |
Dostupno izvana | Ne | Ne |
Definicija privatnog
Članovi razreda deklarirani kao privatni mogu se dohvatiti samo unutar klase. Drugim riječima, članovima deklariranim u privatnom odjeljku klase može pristupiti samo funkcija prijatelja i funkcija člana klase. Privatni članovi se ne mogu dobiti izravno izvedenoj klasi i nedostupni su izvan opsega razreda.
C ++ program prikazuje koncept privatnih pristupnika.
#include pomoću imena prostora std; klasa A {privatna: int i; public: void get () {cout <> i; }}; klasa B: javna A {public: void show () {i ++; cout << "Vaš uneseni broj nakon incrementcpp"> # uključuje korištenje imena prostora std; klasa sisavac {public: void mammalMethod (void) {cout << "Dolazi pod kategoriju sisavaca."U gore navedenom programu, jedan objekt podređene klase kreira se s imenom “ob”, a članskoj funkciji roditeljske klase može se pristupiti putem metode poziva klase pod nazivom “marine_mammalMethod”. Iako se roditeljskoj metodi ne može pristupiti izravno s objektom “ob”.
Definicija zaštićene
Članovi razreda deklarirani kao zaštićeni u klasi mogu biti dostupni samo kroz funkciju člana i funkciju prijatelja klase. Ovim zaštićenim članovima ne može se pristupiti izvan opsega klase, osim dijete klase (odmah izvedena iz nje). On služi ograničenoj svrsi u nasljeđivanju i nasljeđuje svojstva na ograničen način.
Donji C ++ program ilustrira koncept zaštićenih specifikatora pristupa.
#include pomoću imena prostora std; class account1 {protected: int x, y; // dostupan izvedenoj klasi public: void set (int a, int b) {x = a; y = b; } void show () {cout <U gornjem primjeru podređena klasa nasljeđuje svojstva osnovne klase jer su članovi podataka deklarirani kao javni ili zaštićeni. Ne bi bilo moguće ako su x i y deklarirani kao privatni u osnovnoj klasi.
Ključne razlike između privatnih i zaštićenih u C ++
- Zaštićena ključna riječ može se koristiti za izgradnju članova klase koji su privatni za njihovu klasu, ali se mogu naslijediti i koristiti od izvedene klase. Isto tako, to nije moguće dok se koristi privatno, jer se privatni članovi ne mogu naslijediti izravno na izvedenu klasu.
- Kada je osnovna klasa naslijeđena pomoću privatnog pristupnika, čini sve javne i zaštićene članove osnovne klase, privatne članove izvedene klase. Nasuprot tome, to nije slučaj u zaštićenim specifikatorima pristupa.
Zaključak
Privatni i zaštićeni su specifikatori pristupa koji se koriste za različito određivanje vidljivosti klase i njezinih članova. Međutim, zaštićena je fleksibilnija od privatne.