Razlika između apstraktne klase i interfejsa

Razlika između apstraktne klase i interfejsa
Razlika između apstraktne klase i interfejsa

Video: Razlika između apstraktne klase i interfejsa

Video: Razlika između apstraktne klase i interfejsa
Video: Windows 7 против Windows 8 - Тест 2024, Novembar
Anonim

Apstraktna klasa vs Interface

Apstraktna klasa i interfejs su dve objektno orijentisane konstrukcije koje se nalaze u mnogim objektno orijentisanim programskim jezicima kao što je Java. Apstraktna klasa se može smatrati apstraktnom verzijom obične (konkretne) klase, dok se interfejs može smatrati sredstvom za implementaciju ugovora. Apstraktna klasa je klasa koja se ne može inicijalizirati, ali se može proširiti. Interfejs je tip koji moraju implementirati druge klase. U Javi, apstraktne klase se deklarišu pomoću ključne riječi Abstract, dok se ključna riječ interfejsa koristi za definisanje interfejsa.

Šta je apstraktna klasa?

Tipično, apstraktne klase, poznate i kao apstraktne osnovne klase (ABC), ne mogu biti instancirane (instanca te klase se ne može kreirati). Dakle, apstraktne klase imaju smisla samo ako programski jezik podržava nasljeđivanje (sposobnost kreiranja podklasa iz proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet sa delimičnom ili bez implementacije. Stoga se apstraktne klase ponašaju kao nadređene klase iz kojih su izvedene podređene klase tako da će podređena klasa dijeliti nepotpune karakteristike roditeljske klase i funkcionalnost se može dodati da ih dovrši.

Apstraktne klase mogu sadržavati apstraktne metode. Potklase koje proširuju apstraktnu klasu mogu implementirati ove (naslijeđene) apstraktne metode. Ako podređena klasa implementira sve takve apstraktne metode, to je konkretna klasa. Ali ako to ne učini, podređena klasa takođe postaje apstraktna klasa. Sve ovo znači da, kada programer nominuje klasu kao apstraktnu, ona kaže da će klasa biti nekompletna i da će imati elemente koje treba da dopune nasledne podklase. Ovo je lijep način za kreiranje ugovora između dva programera, što pojednostavljuje zadatke u razvoju softvera. Programer, koji piše kod za nasljeđivanje, mora tačno pratiti definicije metoda (ali naravno može imati vlastitu implementaciju).

Šta je interfejs?

Sučelje je apstraktni tip koji se koristi za specificiranje ugovora koji treba implementirati od strane klasa, koje implementiraju taj interfejs. Ključna reč interfejsa se koristi za definisanje interfejsa, a ključna reč Implements se koristi za implementaciju interfejsa od strane klase (u programskom jeziku Java). Obično će interfejs sadržavati samo potpise metoda i deklaracije konstanti. Svaki interfejs koji implementira određeni interfejs treba da implementira sve metode definisane u interfejsu, ili treba da bude deklarisan kao apstraktna klasa. U Javi, tip reference objekta može se definirati kao tip interfejsa. Ali taj objekat mora ili biti null ili treba da sadrži objekat klase, koja implementira to određeno sučelje. Koristeći ključnu riječ Implements u Javi, možete implementirati više interfejsa u jednu klasu.

Koja je razlika između apstraktne klase i interfejsa?

Apstraktne klase obično predstavljaju apstraktni koncept ili entitet sa delimičnom implementacijom ili bez nje. S druge strane, interfejs je apstraktni tip koji se koristi za specifikaciju ugovora koji treba implementirati od strane klasa. Apstraktne klase bi trebale biti naslijeđene (ili proširene), dok bi interfejsi trebali biti implementirani. Apstraktne klase mogu sadržati apstraktne metode, dok interfejs treba da sadrži 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. Interfejs ne može implementirati drugi interfejs. Međutim, interfejs može proširiti klasu.

Preporučuje se: