Apstraktna klasa vs nasljeđe
Apstraktna klasa i Nasljeđivanje su dva važna objektno orijentirana koncepta koja se nalaze u mnogim objektno orijentiranim programskim jezicima kao što je Java. Apstraktna klasa se može smatrati apstraktnom verzijom regularne (konkretne) klase, dok nasljeđivanje dozvoljava novim klasama da prošire druge klase. Apstraktna klasa je klasa koja se ne može inicijalizirati, ali se može proširiti. Dakle, apstraktne klase imaju smisla samo ako programski jezik podržava nasljeđivanje. U Javi, apstraktne klase se deklarišu pomoću ključne riječi Abstract, dok se ključna riječ Extends koristi za nasljeđivanje od (super) klase.
Š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 nasljeđe?
Nasljeđivanje je objektno orijentisan koncept, koji omogućava novim klasama da prošire druge klase. Ključna riječ Extends se koristi za implementaciju koncepta nasljeđivanja u programskom jeziku Java. Nasljeđivanje u suštini pruža ponovnu upotrebu koda dozvoljavajući proširenje svojstava i ponašanja postojeće klase od strane novo definirane klase. Kada nova podklasa (ili izvedena klasa) proširuje super klasu (ili roditeljsku klasu), ta će potklasa naslijediti sve atribute i metode super klase. Potklasa može opciono nadjačati ponašanje (omogućiti novu ili proširenu funkcionalnost metodama) naslijeđeno od roditeljske klase. Tipično, podklasa ne može proširiti više super klasa (npr. u Javi). Stoga ne možete koristiti proširenja za višestruko nasljeđivanje. Da biste imali višestruko nasljeđivanje, morate koristiti interfejse.
Koja je razlika između apstraktne klase i nasljeđa?
Apstraktne klase obično predstavljaju apstraktni koncept ili entitet sa delimičnom implementacijom ili bez nje. Nasljeđivanje omogućava novim klasama da prošire druge klase. Budući da se apstraktne klase ne mogu instancirati, morate koristiti koncept nasljeđivanja da biste koristili apstraktne klase. Inače, apstraktna klasa nema koristi. Apstraktne klase mogu sadržavati apstraktne metode i kada se klasa proširi, sve metode (apstraktne i konkretne) se nasljeđuju. Naslijeđena klasa može implementirati bilo koju ili sve metode. Ako sve apstraktne metode nisu implementirane, tada i ta klasa postaje apstraktna klasa. Klasa ne može naslijediti više od jedne apstraktne klase (ovo nije kvalitet apstraktnih klasa per se, već ograničenje nasljeđivanja).
Srodni postovi:
Razlika između apstraktne klase i konkretne klase
Razlika između virtuelnog i apstraktnog
Razlika između apstraktne klase i interfejsa
Razlika između priključka i produžetka
Razlika između grafikona i stabla
Filed Under: Programiranje označeno sa: ABC, apstraktno, apstraktne osnovne klase, apstraktne klase, apstraktne klase, apstraktne ključne riječi, apstraktne metode, konkretna klasa, proširena ključna riječ, nasljeđivanje, klasa nasljeđivanja, naslijeđena klasa, Java, višestruko nasljeđivanje, objektno orijentirani koncepti, regularna klasa, super klasa
O autoru: Indika
Indika, dipl.inž., MSECE Computer Engineering, PhD. Računarske nauke, je docent i ima istraživačke interese u oblastima bioinformatike, računarske biologije i biomedicinske obrade prirodnog jezika.
Komentari
-
Jason kaže
30. avgusta 2017. u 13:25
Hvala na objašnjenju razlike. Sva moja pitanja su riješena ovim.
Odgovori
-
Aus kaže
10. maja 2019. u 15:04
najbolji odgovor na webu, Učitelj ne objašnjava sranje i nema smisla, monoton mf. Ovako objašnjavate koncepte.
Odgovori
Ostavite odgovor Otkaži odgovor
Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena
Komentar
Ime
Website