V tomto kurzu se pomocí příkladů dozvíme o modifikátorech přístupu pro třídy C ++. Modifikátory přístupu C ++ jsou veřejné, soukromé a chráněné.
Jednou z hlavních funkcí objektově orientovaných programovacích jazyků, jako je C ++, je skrývání dat .
Skrývání dat odkazuje na omezení přístupu k datovým členům třídy. To zabrání jiným funkcím a třídám v manipulaci s daty třídy.
Je však také důležité zpřístupnit některé členské funkce a členské údaje, aby se skrytými daty bylo možné manipulovat nepřímo.
Modifikátory přístupu v C ++ nám umožňují určit, kteří členové třídy jsou přístupní jiným třídám a funkcím a kteří ne.
Například,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Zde jsou proměnné patientNumber a diagnóza Patient
třídy skryty pomocí private
klíčového slova, zatímco členské funkce jsou zpřístupněny pomocí public
klíčového slova.
Typy modifikátorů přístupu v C ++
V C ++ existují 3 modifikátory přístupu:
public
private
protected
veřejný modifikátor přístupu
public
Klíčové slovo se používá k vytvoření veřejné členy (datům a funkcím).- Veřejní členové jsou přístupní z kterékoli části programu.
Příklad 1: C ++ veřejný modifikátor přístupu
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
V tomto programu jsme vytvořili třídu s názvem Sample
, která obsahuje public
proměnný věk a public
funkci displayAge()
.
V main()
jsme vytvořili objekt Sample
třídy s názvem obj1. Poté přistupujeme k veřejným prvkům přímo pomocí kódů obj.age
a obj.displayAge()
.
soukromý modifikátor přístupu
private
Klíčové slovo se používá k vytvoření vlastní členy (datům a funkcím).- K soukromým členům lze přistupovat pouze z kurzu.
- Třídy přátel a funkce přátel však mají přístup k soukromým členům.
Příklad 2: Specifikátor soukromého přístupu C ++
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
V main()
objektu obj1 nemůže přímo přistupovat k věkové proměnné třídy.
// error cin>> obj1.age;
S věkem můžeme manipulovat pouze nepřímo prostřednictvím veřejné funkce displayAge()
, protože tato funkce přiřadí věk argumentu předanému do ní, tj int a
. Parametru funkce .
chráněný modifikátor přístupu
Než se dozvíme o protected
specifikátoru přístupu, ujistěte se, že víte o dědičnosti v C ++.
protected
Klíčové slovo se používá k vytvoření chráněné členy (data a funkce).- K chráněným členům lze přistupovat v rámci třídy a z odvozené třídy.
Příklad 3: Specifikátor přístupu chráněný C ++
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
Zde ChildSample
je zděděná třída, ze které je odvozen Sample
. Proměnná věk je deklarována v Sample
s protected
klíčovým slovem.
To znamená, že ChildSample
má přístup k věku, protože Sample
je to jeho mateřská třída.
Vidíme to tak, že jsme přiřadili hodnotu věku, ChildSample
přestože je ve Sample
třídě deklarován věk .
Shrnutí: veřejné, soukromé a chráněné
public
k prvkům lze přistupovat ze všech ostatních tříd a funkcí.private
k prvkům nelze přistupovat mimo třídu, ve které jsou deklarovány, kroměfriend
tříd a funkcí.protected
prvky jsou stejně jakoprivate
, kromě toho , že k nim lze přistupovat pomocí odvozených tříd.
Specifikátory | Stejná třída | Odvozená třída | Mimo třídu |
---|---|---|---|
public | Ano | Ano | Ano |
private | Ano | Ne | Ne |
protected | Ano | Ano | Ne |
Poznámka: Ve výchozím nastavení jsou členy třídy v C ++ private
, pokud není uvedeno jinak.