Palyginimo diagrama
Palyginimo pagrindas | Privatus | Apsaugota |
---|---|---|
Paveldimo turto paveldėjimas | Išvestinė klasė negali pasiekti bazinių klasių privačių narių. | Išvestinė klasė gali naudotis bazinės klasės saugomais nariais. |
Prieinamumas | Privatūs klasės nariai nėra pasiekiami iš klasės. | Apsaugoti klasės nariai yra nepasiekiami iš klasės ribų, išskyrus klasę, kuri buvo gauta iš karto. |
Prieinama iš savo klasės | Taip | Taip |
Prieinama iš išvestinės klasės | Ne | Taip |
Prieinama iš išorės | Ne | Ne |
Privatumo apibrėžimas
Klasės nariai, deklaruoti kaip privatūs, gali būti atsiimti tik klasėje. Kitaip tariant, nariai, paskelbti privačiame klasės skyriuje, gali būti prieinami tik pagal draugo funkciją ir klasės funkciją. Privatūs nariai negali būti tiesiogiai gauti iš gautos klasės ir nepasiekiami iš klasės.
„C ++“ programa rodo privačių prieigos specifikų sąvoką.
#įtraukti naudojant vardų sritį std; A klasė {private: int i; public: void get () {cout <> i; }}; B klasė: public A {public: void show () {i ++; cout << "n Jūsų įvestas skaičius po incrementcpp"> # apima vardų erdvę std; klasės žinduolis {public: void mammalMethod (void) {cout << "Jis patenka į žinduolių kategoriją." <Pirmiau pateiktoje programoje sukuriamas vienas vaiko klasės objektas su pavadinimu „ob“, o tėvų klasės nario funkcija pasiekiama skambinant vaikų klasės metodu „marine_mammalMethod“. Nors pirminis metodas negali būti pasiekiamas tiesiogiai su objektu „ob“.
Apsaugos apibrėžtis
Klasės nariai, paskelbti kaip saugomi klasėje, gali būti prieinami tik per klasės nario funkciją ir draugo funkciją. Šiems saugomiems nariams negalima patekti iš klasės taikymo srities, išskyrus vaiko klasę (iš jos iš karto gauta). Jis tarnauja ribotam paveldėjimo tikslui ir paveldi savybes ribotai.
Toliau pateikta C ++ programa iliustruoja saugomų prieigos specifikų koncepciją.
#įtraukti naudojant vardų sritį std; klasės paskyra1 {apsaugota: int x, y; // prieinama išvestinei klasei viešai: negaliojančių rinkinys (int a, int b) {x = a; y = b; } void show () {cout <Pirmiau pateiktame pavyzdyje vaikų klasė paveldi bazinės klasės savybes, nes duomenų nariai yra paskelbti viešais arba saugomais. Nebūtų įmanoma, jei x ir y buvo paskelbti privačiais bazinės klasės.
Pagrindiniai skirtumai tarp privačių ir apsaugotų C + +
- Apsaugotas raktinis žodis gali būti naudojamas klasių nariams, kurie yra privatūs savo klasėje, sukurti, bet gali būti paveldimi ir naudojami pagal gautą klasę. Priešingai, tai neįmanoma naudojant privatų asmenį, nes privatūs nariai negali būti paveldimi tiesiogiai iš gautos klasės.
- Kai bazinė klasė paveldima naudojant privataus prieigos specifiką, ji suteikia visiems visuomenei ir saugomiems bazinės klasės nariams, privačiam išvestinės klasės nariams. Priešingai, taip nėra saugomų prieigos specifikacijų atveju.
Išvada
Privatūs ir apsaugoti yra prieigos specifikai, naudojami skirtingiems klasės ir jos narių matomumui nustatyti. Tačiau saugoma yra lankstesnė nei privati.