Junior — Middle
Koje su razlike između apstraktne klase i interfejsa u objektno-orijentisanom programiranju?
sobes.tech АИ
Одговор од АИ
Apstraktna klasa i interfejs su različiti mehanizmi za opisivanje ugovora i ponašanja u objektno-orijentisanom programiranju, ali sa ključnim razlikama:
-
Apstraktna klasa može sadržavati i apstraktne (bez implementacije) i konkretne metode sa implementacijom. Može imati stanje (polja). Klase nasleđuju apstraktnu klasu i mogu prepisivati metode.
-
Interfejs opisuje samo skup metoda bez implementacije i ne sadrži stanje. Klasa koja implementira interfejs mora implementirati sve njegove metode.
Primer razlika:
- Apstraktna klasa je pogodna kada je potrebno definisati osnovnu implementaciju i zajedničko stanje za naslednike.
- Interfejs se koristi za opisivanje mogućnosti koje mogu biti implementirane od strane različitih klasa bez naslednog odnosa.
Na primer, interfejs Flyable može opisivati metodu fly(), a apstraktna klasa Bird može sadržavati polje wingSpan i metodu sing() sa implementacijom.