Skip to content

Latest commit

 

History

History
80 lines (56 loc) · 2.1 KB

03-access-modifiers.md

File metadata and controls

80 lines (56 loc) · 2.1 KB

Programowanie obiektowe

Modyfikatory dostępu

Coders School

Analogia

W większości sytuacji nie chcemy, aby ktoś nam grzebał w polach naszej klasy.

Wyobraź sobie, że inni widzą Twoje wnętrzności i mają do nich dostęp. Masz otwarty brzuch. Ktoś może w każdej chwili wyjąć Ci serce. To mało komfortowa sytuacja.

Wszystko jest zamknięte wewnątrz, a najważniejsze narządy chroni klatka piersiowa. W programowaniu obiektowym powiemy, że dostęp do narządów wewnętrznych jest prywatny 😉.

Nie zgadzamy się, aby ktoś miał dostęp naszych narządów wewnętrznych, ale nie mamy natomiast nic przeciwko temu, żeby ktoś miał dostęp do naszych rąk. Może nam wtedy np. wetknąć w nie pieniądze 💵. Przemilczmy kwestię innych narządów i tego czy zgadzamy się żeby ktoś ich używał 😈

To co jest dostępne dla innych ma dostęp publiczny. Jest to też tzw. interfejs klasy.


private vs public

class Computer {
private:
    void restart();
};

Computer computer;
computer.restart(); // Forbidden, restart is a private member
class Computer {
public:
    void restart();
};

Computer computer;
computer.restart(); // Ok

private vs public

class Computer {
public:
    void reboot() { restart(); }
private:
    void restart();
};

Computer computer;
computer.restart(); // Forbidden, restart is a private member
computer.reboot();  // Ok, calls restart

Modyfikator dostępu protected

Istnieje jeszcze jeden modyfikator dostępu w C++ - protected.

O nim opowiemy sobie, gdy już wyjaśnimy czym jest dziedziczenie.