Võrdluskaart
Võrdluse alus | Eraldi | Kaitstud |
---|---|---|
Pärandklassi pärandvara | Tuletatud klass ei pääse põhiklassi eraliikmetele. | Tuletatud klass saab juurdepääsu põhiklassi kaitstud liikmetele. |
Kättesaadavus | Klasside erasektori liikmed ei ole klassiruumist väljapoole kättesaadavad. | Klassi kaitstud liikmed ei ole klassiruumist väljapoole ligipääsetavad, välja arvatud kohe saadud klass. |
Saadaval oma klassist | Jah | Jah |
Saadaval tuletatud klassist | Ei | Jah |
Juurdepääs väljastpoolt | Ei | Ei |
Eraelu määratlus
Eraklassi kuuluvaid klassi liikmeid saab ainult klassis alla laadida. Teisisõnu, klassi eriosas deklareeritud liikmeid saavad kasutada ainult klassi sõberfunktsioon ja liikme funktsioon. Eraldi liikmed ei ole saadud tuletatud klassi jaoks otseselt kättesaadavad ja nad ei ole klassiruumis kättesaadavad.
C ++ programm näitab privaatsete juurdepääsu spetsifikatsioonide kontseptsiooni.
#kasuta nimeruumi std; klass A {private: int i; avalik: void get () {cout <> i; }}; klass B: public A {public: void show () {i ++; cout << "i Teie sisestatud number pärast incrementcpp"> sisaldab ka nimeruumi std; klassi imetaja {public: void mammalMethod (void) {cout << "See kuulub imetajate kategooriasse." <Ülaltoodud programmis luuakse lapseklassi üks objekt nimega „ob” ja vanemaklassi liikmefunktsioonile pääseb ligi lasteklassi meetodi „marine_mammalMethod” kaudu. Kuigi põhimeetodile ei pääse otse objekti „ob” juurde.
Kaitstud mõiste
Klassis kaitstud klassi liikmed võivad olla ligipääsetavad ainult klassi liikmete funktsiooni ja sõberfunktsiooni kaudu. Neid kaitstud liikmeid ei saa klassi ulatusest välja jätta, välja arvatud lapse klass (kohe sellest tuletatud). See teenib pärandina piiratud eesmärki ja pärandab omadused piiratud viisil.
Allpool toodud C ++ programm illustreerib kaitstud juurdepääsu spetsifikaatide kontseptsiooni.
#kasuta nimeruumi std; klassi konto1 {kaitstud: int x, y; // tuletatud klassi avalikkusele kättesaadav: tühine komplekt (int a, int b) {x = a; y = b; } void show () {cout <Ülaltoodud näites pärib lapseklass põhiklassi omadused, kuna andmesubjektid on avalikud või kaitstud. Ei oleks võimalik, kui x ja y oleksid põhiklassis kuulutatud eraviisilisteks.
Peamised erinevused era- ja kaitstud C + + vahel
- Kaitstud märksõna saab kasutada klassi liikmetele, kes on oma klassi privaatsed, kuid mida saab päritud ja tuletatud klassi kasutada. Seevastu ei ole see eraviisilise kasutamise ajal võimalik, sest eraisikuid ei saa päritud klassile otse pärida.
- Kui baasklass pärineb privaatset juurdepääsu spetsifikatsiooni kasutades, teeb see baasklassi kõik avalikkuse ja kaitstud liikmed, tuletatud klassi eraõiguslikud liikmed. Vastupidi, see ei ole kaitstud juurdepääsu spetsifikaatorite puhul.
Järeldus
Privaatne ja kaitstud on juurdepääsu spetsifikatsioonid, mida kasutatakse klassi ja selle liikmete nähtavuse määramiseks erinevalt. Kuid kaitstud on paindlikum kui erasektor.