Hermetyzacja to zasada programowania obiektowego, która mówi, że:
Źle. To opis polimorfizmu/dziedziczenia, nie hermetyzacji.
Źle. To bliższe dziedziczeniu/kompozycji niż hermetyzacji.
Dobrze. Hermetyzacja ukrywa wewnętrzne szczegóły obiektu przed światem zewnętrznym.
Źle. To cecha typowania dynamicznego, nie hermetyzacji.
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.