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

Java - Czy wytłumaczy mi ktoś jaka jest różnica między klasą abstrakcyjną a interfejsem?

Object Storage Arubacloud
+1 głos
7,640 wizyt
pytanie zadane 28 października 2017 w Java przez Hiskiel Pasjonat (22,830 p.)
Jak w tytule. Poza tym, dalej nie rozumiem interfejsów, a bez tego dalej nie ruszę. Nie wystarczy po prostu Ctrl+C, Ctrl+V?...

3 odpowiedzi

+5 głosów
odpowiedź 28 października 2017 przez adas94 Nałogowiec (29,200 p.)
wybrane 29 października 2017 przez Hiskiel
 
Najlepsza
Klasa to jest po prostu klasa, czyli zbiór informacji (pola) oraz zbiór zachowań(metody) jakie klasa(a raczej późniejszy obiekt typu tej klasy) może przyjmować. Klasa abstrakcyjna natomiast to taka klasa, z której nie można stworzyć obiektu, czyli 'fizycznego' bytu.

Interfejs natomiast to można rzec wyspecjalizowany zbiór zachowań (metod) do zaimplementowania dla danej klasy. Czyli tworzysz np klasę Człowiek i implementujesz w nim interfejsy (mówienie, poruszanie itd.). Teraz wyobraź sobie, że pracujesz nad funkcjonalnością poruszania się obiektów na mapie 2D. Nie będziesz wtedy inicjalizował obiektów klasy Człowiek, bo np Zwierzę czy tam Samochód też mogą się poruszać. Wtedy zainicjalizujesz obiekt typu danego interfejsu, a więc :

Poruszanie obiekt;  - i do tego możesz przypisywać wszystkie obiekty klas, które mają zaimplementowany ten interfejs (implementujesz go w Człowiek, Zwierzę, Samochód) ponieważ  te klasy mają w sobie definicję tego interfejsu. Chodzi o to, że działasz w tym wypadku na pewnym wyspecjalizowanym zagadnieniu danego obiektu (Poruszanie) nie mając dostępu do innych jego zachowań(innych metod nie dotyczących poruszania).

A co do różnicy między klasą abstrakcyjną, a interfejsem, to dana klasa może dziedziczyć tylko po jednej klasie, a może implementować wiele interfejsów. Druga rzecz, to w klasie abstrakcyjnej można definiować ciała metod, a w interfejsach występują tylko sygnatury metod (chociaż od Javy 8 są tzw. default method, co trochę rozmywa tutaj sprawę)
+4 głosów
odpowiedź 28 października 2017 przez Mateusz51 Nałogowiec (28,180 p.)
@adas94 badzo dobrze wytłumaczył się czym się róźnia. Od siebię dodam że interfejsów używa się zazwyczaj do rozwiązań polimorficznych  za to klasy abstrakcyjne do agregowania kodu i jego uwspólniania między klasami.

Mówiąc inaczej. Interfejs powinien mówić co można z daną klasą zrobić a klasa abstrakcyjna powinna być narzędziem do budowy hierarchii klas.
0 głosów
odpowiedź 28 października 2017 przez Benek Szeryf (90,870 p.)

A może coś od siebie? Gdzie się zacinasz? Zrobiłeś:

Ctrl+C, Ctrl+V

4programmers...

komentarz 28 października 2017 przez Hiskiel Pasjonat (22,830 p.)
PrezesiQ, to ja. Zawsze ludzie wytłumaczą to inaczej. Tutaj wytłumaczyli mi to w bardziej przystępny sposób.
komentarz 28 października 2017 przez adas94 Nałogowiec (29,200 p.)
To jak fajnie Ci to wytłumaczyliśmy, to rzuć plusem każdemu i wybierz najlepszą odpowiedź ;d
komentarz 28 października 2017 przez Hiskiel Pasjonat (22,830 p.)
Heh, jedyna jest Twoja odpowiedź xD ale i tak git
komentarz 28 października 2017 przez adas94 Nałogowiec (29,200 p.)
Nie no @Mateusz51 również dołożył swoją cegiełkę i dopowiedział bardzo ważną rzecz, ale tą wiedzę docenisz dopiero jak będziesz pisał jakieś większe projekty.

Podobne pytania

+1 głos
1 odpowiedź 451 wizyt
+1 głos
2 odpowiedzi 877 wizyt
0 głosów
2 odpowiedzi 958 wizyt

92,543 zapytań

141,387 odpowiedzi

319,502 komentarzy

61,930 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...