Kwalifikatory dostępu w programowaniu obiektowym

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Kwalifikatory dostępu określają, z jakiego miejsca programu można korzystać z pól i metod klasy. Są podstawowym mechanizmem kontroli dostępu w programowaniu obiektowym i wspierają hermetyzację.

Najważniejsze kwalifikatory

  • publiczny (public) - element jest dostępny z każdego miejsca programu, np. z obiektu, klasy pochodnej i innych klas.
  • prywatny (private) - element jest dostępny tylko wewnątrz tej samej klasy. Nie mają do niego dostępu ani obiekty z zewnątrz, ani klasy pochodne.
  • chroniony (protected) - element jest dostępny w tej samej klasie oraz w klasach pochodnych, ale nie jest dostępny bezpośrednio z zewnątrz.

Przykład w PHP

class Konto {
    private $saldo = 0;

    public function wplac($kwota) {
        $this->saldo += $kwota;
    }

    public function pokazSaldo() {
        return $this->saldo;
    }
}

class KontoFirmowe extends Konto {
    public function test() {
        // $this->saldo; // błąd - pole private nie jest dostępne w klasie pochodnej
    }
}

W przykładzie pole $saldo jest prywatne, więc może być używane tylko przez metody klasy Konto. Klasa KontoFirmowe, mimo że dziedziczy po Konto, nie ma bezpośredniego dostępu do tego pola.

Typowa pułapka egzaminacyjna

Jeśli pytanie mówi: „dostęp mają jedynie metody tej klasy” oraz „nie jest dostępne dla klas pochodnych”, chodzi o kwalifikator prywatny (private). Jeśli element ma być dostępny także w klasach pochodnych, należy użyć protected.