Sobes.tech
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.