• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziedziczenie a hermetyzacja

0 głosów
884 wizyt
pytanie zadane 22 stycznia 2016 w C i C++ przez Remo Początkujący (280 p.)
Witam,

Chciałbym zadać wam jedno pytanie :)

Jaki wpływ na hermetyzację ma dziedziczenie ? osłabia ją ? wzmacnia ? jeśli tak to dlaczego ?

 

Z góry dziękuje za odpowiedź.

3 odpowiedzi

+1 głos
odpowiedź 22 stycznia 2016 przez nowszy94 Bywalec (2,320 p.)
Masz na myśli osłabienie hermetyzacji czego? Klasy z której dziedziczysz czy klasy po niej dziedziczącej?
komentarz 22 stycznia 2016 przez Remo Początkujący (280 p.)
chodzi mi tak ogólnie o wszystko. i klasy z której dziedziczy i klasy po niej dziedziczącej. Jaki ma wpływ dziedziczenie ? Co się dzieje wtedy z hermetyzacją ?

Bo w zaprzyjaźnianiu np ją osłabia.
komentarz 22 stycznia 2016 przez nowszy94 Bywalec (2,320 p.)
W takim razie nie ma wpływu.

Pytanie trochę maślane, ta wiedza Ci się do niczego nie przyda.
komentarz 22 stycznia 2016 przez Remo Początkujący (280 p.)
Jak to w takim razie ? A kiedy dziedziczenie ma wpływ na hermetyzacje ?
komentarz 22 stycznia 2016 przez nowszy94 Bywalec (2,320 p.)
Eee, a co ma jedno do drugiego?
+1 głos
odpowiedź 22 stycznia 2016 przez niezalogowany
edycja 26 stycznia 2016
A jaki ma mieć wpływ? Są to dwa, zupełnie niezależne od siebie pojęcia.

@EDIT
Mah bad... Zapomniałem, że w Cpp istnieje coś takiego jak "friend"...
0 głosów
odpowiedź 22 stycznia 2016 przez event15 Szeryf (93,790 p.)
Puryści powiedzą, że dziedziczenie osłabia hermetyzację. Ja powiem, że to jest zależne. Jeżeli dziedziczysz po którejś klasie, to wszystkie metody protected (i pola) są dostępne w klasie potomnej.

Co innego, gdy klasa nadrzędna ma wszystko na public - to jest łamanie hermetyzacji.

Fakt że inna klasa korzysta z obiektów jakiejś klasy jest w pewnym sensie łamaniem enkapsulacji. Wyobraź sobie, że jedziesz sobie samochodem i wcinasz swoją ulubioną kanapkę z serem. Masz otwarte okno kierowcy. Nagle podjeżdża jakiś inny samochód, ktoś wyciąga łapę i zabiera ci kanapkę sprzed nosa. Klasy powinny być hermetyczne i powinny mieć jednak ściśle określone formy dostępu. Przy dziedziczeniu, jeżeli programista jest niedoświadczony, można dość prosto udostępnić pola i metody, które w zamyśle nie powinny być dostępne z innego miejsca.  

Ogólnie zalecane jest wykorzystywanie polimorfizmu zamiast dziedziczenia.

Podobne pytania

+1 głos
2 odpowiedzi 931 wizyt
pytanie zadane 21 listopada 2015 w C# przez emSon Stary wyjadacz (10,480 p.)
0 głosów
1 odpowiedź 444 wizyt
pytanie zadane 4 czerwca 2018 w C i C++ przez KlemensGak Bywalec (2,390 p.)
0 głosów
2 odpowiedzi 1,449 wizyt

93,773 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,378 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...