Hermetyzacja to zasada programowania obiektowego, która mówi, że:
Źle. To cecha typowania dynamicznego, nie hermetyzacji.
Źle. To bliższe dziedziczeniu/kompozycji niż hermetyzacji.
Źle. To opis polimorfizmu/dziedziczenia, nie hermetyzacji.
Dobrze. Hermetyzacja ukrywa wewnętrzne szczegóły obiektu przed światem zewnętrznym.
Hermetyzacja (enkapsulacja) to zasada programowania obiektowego polegająca na ukrywaniu wewnętrznych szczegółów obiektu: pola i metody przeznaczone tylko do użytku wewnątrz klasy oznacza się modyfikatorami
private lub protected, a na zewnątrz udostępnia jedynie potrzebny interfejs (public). Dostęp do ukrytych pól odbywa się przez metody (np. gettery i settery), co pozwala kontrolować poprawność danych. Dzięki temu zmiana wnętrza klasy nie psuje kodu, który z niej korzysta. Dlatego hermetyzacja oznacza ograniczanie zasięgu pól i metod do private/protected.Pozostałe odpowiedzi opisują inne pojęcia obiektowe. Współdzielenie funkcjonalności między klasami to raczej dziedziczenie lub kompozycja, a nie ukrywanie szczegółów. Metody wirtualne implementowane w klasach pochodnych dotyczą polimorfizmu i dziedziczenia - pozwalają różnie realizować tę samą metodę w klasach potomnych. Dynamiczna zmiana typu pola w zależności od danych to cecha typowania dynamicznego języka, niezwiązana z zasadami OOP. Hermetyzacja polega na ograniczaniu dostępu do wewnętrznych pól i metod (
private/protected), dlatego ta odpowiedź jest poprawna.