Oto krótkie definicje hermetyzacji i abstrakcji.
Abstrakcja:
Proces abstrakcji w Javie służy do ukrycia pewnych szczegółów i pokazania tylko podstawowych cech obiektu. Innymi słowy, dotyczy zewnętrznego widoku obiektu (interfejsu). Jedynym dobrym przykładem, jaki widzę w różnych witrynach, jest interfejs.
Kapsułkowanie:
Chodzi w zasadzie o ukrycie stanu obiektu za pomocą modyfikatorów typu private, public, protected itp. Ujawniamy stan za pomocą metod publicznych tylko w razie potrzeby.
To, co osiągamy za pomocą modyfikatorów private
, public
ukrywa również niepotrzebne szczegóły z zewnątrz, co jest niczym innym jak pojęciem abstrakcji
Zatem z powyższego wyjaśnienia wygląda na to, że hermetyzacja jest częścią abstrakcji lub możemy powiedzieć, że jest podzbiorem abstrakcji. Ale dlaczego w takim razie wymyślono pojęcie hermetyzacji, skoro moglibyśmy zająć się nim tylko z abstrakcją? Jestem pewien, że powinna istnieć jakaś zasadnicza różnica, która je odróżnia, ale większość materiałów w sieci mówi prawie to samo o nich obu.
Chociaż to pytanie również zostało poruszone na tym forum wcześniej, ale piszę je ponownie z określonymi wątpliwościami. Niektóre odpowiedzi mówią również, że abstrakcja to koncepcja, a hermetyzacja to implementacja. Ale nie kupuję tego - jeśli to prawda, to myślę, że te dwie różne koncepcje mają na celu zmylić nas.
Aktualizacja: - Po 5 latach wymyśliłem własną odpowiedź, która jest sednem odpowiedzi w tym poście i poniżej
private
public
, ponieważ zapewniają one tylko ukrywanie informacji / danych, które robimy, ponieważ dobrą praktyką jest ochrona danych instancji.
An 'abstraction' (noun) is a concept that acts as a super-categorical noun for all subordinate concepts, and connects any related concepts as a group, field, or category.