Razlika između apstraktne klase i nasljeđivanja

Sadržaj:

Razlika između apstraktne klase i nasljeđivanja
Razlika između apstraktne klase i nasljeđivanja

Video: Razlika između apstraktne klase i nasljeđivanja

Video: Razlika između apstraktne klase i nasljeđivanja
Video: What is Systems engineering?, Explain Systems engineering, Define Systems engineering 2024, Studeni
Anonim

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:

Image
Image
Image
Image

Razlika između apstraktne klase i konkretne klase

Image
Image
Image
Image

Razlika između virtualnog i apstraktnog

Image
Image
Image
Image

Razlika između apstraktne klase i sučelja

Image
Image
Image
Image

Razlika između implementacije i proširenja

Image
Image
Image
Image

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

Slika
Slika

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

  1. Slika
    Slika

    Jason kaže

    30. kolovoza 2017. u 13:25

    Hvala na objašnjenju razlike. Ovim su riješena sva moja pitanja.

    Odgovori

  2. Slika
    Slika

    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

E-mail

web stranica

Zatražite članak
Zatražite članak
Zatražite članak
Zatražite članak

Istaknuti postovi

Razlika između simptoma koronavirusa i prehlade
Razlika između simptoma koronavirusa i prehlade

Razlika između simptoma koronavirusa i prehlade

Razlika između koronavirusa i SARS-a
Razlika između koronavirusa i SARS-a

Razlika između koronavirusa i SARS-a

Razlika između koronavirusa i gripe
Razlika između koronavirusa i gripe

Razlika između koronavirusa i gripe

Razlika između Coronavirusa i Covida 19
Razlika između Coronavirusa i Covida 19

Razlika između Coronavirusa i Covida 19

Moglo bi vam se svidjeti

Razlika između sibirskog haskija i malamuta

Razlika između računa AB i BC

Preporučeni: