Apstraktna klasa vs sučelje
Apstraktna klasa i sučelje dva su objektno orijentirana konstrukta koja se nalaze u mnogim objektno orijentiranim programskim jezicima poput Jave. Apstraktna klasa može se smatrati apstraktnom verzijom redovite (konkretne) klase, dok se sučelje može smatrati sredstvom za provedbu ugovora. Apstraktna klasa je klasa koja se ne može inicijalizirati, ali se može proširiti. Sučelje je vrsta koju moraju implementirati druge klase. U Javi se klase Abstract deklariraju pomoću ključne riječi Abstract, dok se ključna riječ interface koristi za definiranje sučelja.
Što je sažetak?
Uobičajeno se apstraktne klase, poznate i kao Abstract Basic Classes (ABC), ne mogu instancirati (instanca te klase ne može se stvoriti). Dakle, klase sažetak ima smisla imati samo ako programski jezik podržava nasljeđivanje (mogućnost stvaranja potklasa od proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. Stoga, apstraktni razredi djeluju kao roditeljski razredi iz kojih se izvode podređeni razredi, tako da će podređeni razred dijeliti nepotpune značajke nadređenog razreda, a funkcionalnost se može dodati kako bi ih dovršila.
Apstraktni tečajevi mogu sadržavati apstraktne metode. Podrazredi koji proširuju apstraktnu klasu mogu primijeniti ove (naslijeđene) apstraktne metode. Ako podređena klasa provodi sve takve apstraktne metode, to je konkretna klasa. Ali ako se to ne dogodi, podređeni razred također postaje sažetak. Sve ovo znači da, kad programer nominira klasu kao Sažetak, ona kaže da će klasa biti nepotpuna i da će imati elemente koje treba dovršiti nasljeđivanjem potklasa. Ovo je lijep način za stvaranje ugovora između dva programera, koji pojednostavljuje zadatke u razvoju softvera. Programer, koji piše kod za nasljeđivanje, mora točno slijediti definicije metode (ali naravno može imati vlastitu implementaciju).
Što je sučelje?
Sučelje je apstraktna vrsta koja se koristi za specificiranje ugovora koji bi trebale implementirati klase koje implementiraju to sučelje. Ključna riječ sučelje koristi se za definiranje sučelja, a ključna riječ Implements koristi se za implementaciju sučelja od strane klase (u programskom jeziku Java). Obično će sučelje sadržavati samo potpise metoda i konstantne deklaracije. Bilo koje sučelje koje implementira određeno sučelje trebalo bi implementirati sve metode definirane u sučelju ili bi trebalo biti deklarirano kao apstraktna klasa. U Javi se vrsta reference na objekt može definirati kao vrsta sučelja. Ali taj objekt mora biti null ili treba sadržavati objekt klase, koji implementira to određeno sučelje. Korištenjem ključne riječi Implements u Javi možete implementirati više sučelja u jednu klasu.
Koja je razlika između klase sažetka i sučelja?
Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. S druge strane, sučelje je apstraktna vrsta koja se koristi za specificiranje ugovora koji bi klase trebale implementirati. Apstraktne klase treba naslijediti (ili proširiti), dok treba implementirati sučelja. Apstraktne klase mogu sadržavati apstraktne metode, dok sučelje treba sadržavati samo apstraktne metode. Apstraktne klase mogu sadržavati bilo koje varijable, ali sučelja mogu definirati samo konstante. Klasa ne može naslijediti više od jedne apstraktne klase, ali može implementirati više sučelja. Sučelje ne može implementirati drugo sučelje. Međutim, sučelje može proširiti klasu.