Apstraktna klasa protiv nasljeđivanja
Apstraktna klasa i nasljeđivanje dva su važna objektno orijentirana koncepta koja se nalaze u mnogim objektno orijentiranim programskim jezicima poput Jave. Apstraktna klasa može se smatrati apstraktnom verzijom obične (konkretne) klase, dok Nasljeđivanje omogućuje 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 se apstraktne klase deklariraju pomoću ključne riječi Abstract, dok se ključna riječ Extends koristi za nasljeđivanje od (super) klase.
Što je apstraktna klasa?
Tipično, apstraktne klase, poznate i kao apstraktne osnovne klase (ABC), ne mogu se instancirati (instanca te klase ne može se kreirati). Dakle, apstraktne klase imaju smisla samo ako programski jezik podržava nasljeđivanje (mogućnost stvaranja podklasa iz proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. Stoga, apstraktne klase djeluju kao nadređene klase iz kojih su izvedene podređene klase tako da podređena klasa dijeli nepotpune značajke nadređene klase i može se dodati funkcionalnost da ih dovrši.
Apstraktne klase mogu sadržavati apstraktne metode. Podklase koje proširuju apstraktnu klasu mogu implementirati ove (naslijeđene) apstraktne metode. Ako klasa dijete implementira sve takve apstraktne metode, to je konkretna klasa. Ali ako ne, klasa dijete također postaje apstraktna klasa. Sve to znači da, kada programer nominira klasu kao sažetak, on govori da će klasa biti nepotpuna i da će imati elemente koje trebaju dovršiti naslijeđene podklase. 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 nasljeđivanje?
Nasljeđivanje je objektno orijentirani koncept koji omogućuje novim klasama da prošire druge klase. Ključna riječ Extends koristi se za implementaciju koncepta nasljeđivanja u programskom jeziku Java. Nasljeđivanje u biti omogućuje ponovnu upotrebu koda dopuštajući proširenje svojstava i ponašanja postojeće klase novodefiniranom klasom. Kada nova podklasa (ili izvedena klasa) proširuje super klasu (ili nadređenu klasu), ta će podklasa naslijediti sve atribute i metode super klase. Podklasa može po izboru nadjačati ponašanje (pružiti novu ili proširenu funkcionalnost metodama) naslijeđeno od nadređene klase. Tipično, potklasa ne može proširiti više super klasa (npr. u Javi). Stoga ne možete koristiti extends za višestruko nasljeđivanje. Da biste imali višestruko nasljeđivanje, trebate koristiti sučelja.
Koja je razlika između apstraktne klase i nasljeđivanja?
Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. Nasljeđivanje omogućuje novim klasama da prošire druge klase. Budući da se apstraktne klase ne mogu instancirati, trebate koristiti koncept nasljeđivanja da biste koristili apstraktne klase. Inače, apstraktna klasa nema koristi. Apstraktne klase mogu sadržavati apstraktne metode, a 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, ta klasa također postaje apstraktna klasa. Klasa ne može naslijediti više od jedne apstraktne klase (ovo nije kvaliteta apstraktnih klasa per se, već ograničenje nasljeđivanja).
Povezani postovi:
Razlika između apstraktne klase i konkretne klase
Razlika između virtualnog i apstraktnog
Razlika između apstraktne klase i sučelja
Razlika između implementacije i proširenja
Razlika između grafikona i stabla
Spremljeno pod: Programiranje Označeno sa: ABC, sažetak, apstraktne osnovne klase, apstraktna klasa, apstraktne klase, apstraktna ključna riječ, 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, obična klasa, super klasa
O autoru: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Računalne znanosti, docent je i ima istraživačke interese u područjima bioinformatike, računalne biologije i biomedicinske obrade prirodnog jezika.
Komentari
-
Jason kaže
30. kolovoza 2017. u 13:25
Hvala na objašnjenju razlike. Ovim su riješena sva moja pitanja.
Odgovori
-
Aus kaže
10. svibnja 2019. u 15:04
najbolji odgovor na webu, Učitelj ne objašnjava ništa i nema smisla, mono ton mf. Ovako objašnjavate pojmove.
Odgovori
Ostavi odgovor Odustani od odgovora
Vaša email adresa neće biti objavljena. Obavezna polja su označena
Komentar
Ime
web stranica