W tym samouczku dowiemy się o modyfikatorach dostępu do klas C ++ na podstawie przykładów. Modyfikatory dostępu w C ++ są publiczne, prywatne i chronione.
Jedną z głównych cech języków programowania zorientowanych obiektowo, takich jak C ++, jest ukrywanie danych .
Ukrywanie danych odnosi się do ograniczania dostępu do danych członków klasy. Ma to na celu zapobieganie ingerencji innych funkcji i klas w dane klasy.
Jednak ważne jest również, aby niektóre funkcje i dane składowe były dostępne, tak aby można było manipulować danymi ukrytymi pośrednio.
Modyfikatory dostępu w C ++ pozwalają nam określić, które elementy członkowskie klasy są dostępne dla innych klas i funkcji, a które nie.
Na przykład,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Tutaj zmienne numer pacjenta i diagnoza Patient
klasy są ukryte za pomocą private
słowa kluczowego, natomiast funkcje składowe są udostępniane za pomocą public
słowa kluczowego.
Typy modyfikatorów dostępu C ++
W C ++ istnieją 3 modyfikatory dostępu:
public
private
protected
public Access Modifier
- Słowo
public
kluczowe służy do tworzenia publicznych członków (danych i funkcji). - Członkowie publiczni są dostępni z dowolnej części programu.
Przykład 1: C ++ public Access Modifier
#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; )
Wynik:
Podaj swój wiek: 20 lat = 20
W tym programie stworzyliśmy klasę o nazwie Sample
, która zawiera public
zmienny wiek i public
funkcję displayAge()
.
W programie main()
stworzyliśmy obiekt Sample
klasy o nazwie obj1. Następnie uzyskujemy bezpośredni dostęp do elementów publicznych za pomocą kodów obj.age
i obj.displayAge()
.
prywatny modyfikator dostępu
- Słowo
private
kluczowe służy do tworzenia prywatnych członków (danych i funkcji). - Dostęp do członków prywatnych można uzyskać tylko z poziomu klasy.
- Jednak klasy i funkcje znajomych mogą uzyskiwać dostęp do członków prywatnych.
Przykład 2: specyfikator dostępu prywatnego w 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; )
Wynik:
Podaj swój wiek: 20 lat = 20
W main()
programie obiekt obj1 nie może bezpośrednio uzyskać dostępu do zmiennej klasy age.
// error cin>> obj1.age;
Wiekiem możemy manipulować tylko pośrednio poprzez funkcję publiczną displayAge()
, ponieważ ta funkcja przypisuje wiek przekazanemu do niej argumentowi, czyli parametrowi funkcji int a
.
chroniony modyfikator dostępu
Zanim poznamy specyfikator protected
dostępu, upewnij się, że znasz dziedziczenie w C ++.
- Słowo
protected
kluczowe służy do tworzenia chronionych elementów członkowskich (danych i funkcji). - Dostęp do chronionych elementów członkowskich można uzyskać w ramach klasy iz klasy pochodnej.
Przykład 3: Specyfikator dostępu chronionego w 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; )
Wynik:
Podaj swój wiek: 20 lat = 20
Tutaj ChildSample
jest dziedziczona klasa, która pochodzi z Sample
. Zmienna wiek jest zadeklarowana Sample
za pomocą protected
słowa kluczowego.
Oznacza to, że ChildSample
może uzyskać dostęp do wieku, ponieważ Sample
jest jego klasą nadrzędną.
Widzimy to, ponieważ przypisaliśmy wartość wieku, ChildSample
mimo że wiek jest zadeklarowany w Sample
klasie.
Podsumowanie: publiczne, prywatne i chronione
public
do elementów mogą mieć dostęp wszystkie inne klasy i funkcje.private
nie można uzyskać dostępu do elementów poza klasą, w której są zadeklarowane, z wyjątkiemfriend
klas i funkcji.protected
elementy są takieprivate
same, jak te , z wyjątkiem tego , że mogą być dostępne przez klasy pochodne.
Specyfikatory | Sama klasa | Klasy pochodnej | Poza klasą |
---|---|---|---|
public | tak | tak | tak |
private | tak | Nie | Nie |
protected | tak | tak | Nie |
Uwaga: Domyślnie członkowie klas w C ++ są private
, chyba że określono inaczej.