Forskellen mellem abstrakt klasse og arv

Indholdsfortegnelse:

Forskellen mellem abstrakt klasse og arv
Forskellen mellem abstrakt klasse og arv

Video: Forskellen mellem abstrakt klasse og arv

Video: Forskellen mellem abstrakt klasse og arv
Video: 30 глупых вопросов Data Engineer [Карьера в IT] 2024, November
Anonim

Abstrakt klasse vs arv

Abstract class og Inheritance er to vigtige objektorienterede begreber, der findes i mange objektorienterede programmeringssprog som Java. Abstrakt klasse kan betragtes som en abstrakt version af en almindelig (konkret) klasse, mens arv tillader nye klasser at udvide andre klasser. Abstrakt klasse er en klasse, der ikke kan initialiseres, men som kan udvides. Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv. I Java erklæres abstrakte klasser ved hjælp af abstrakt nøgleord, mens Extends nøgleord bruges til at arve fra en (super) klasse.

Hvad er abstrakt klasse?

Typisk kan abstrakte klasser, også kendt som abstrakte basisklasser (ABC), ikke instansieres (en forekomst af den klasse kan ikke oprettes). Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evnen til at oprette underklasser fra at udvide en klasse). Abstrakte klasser repræsenterer norm alt et abstrakt koncept eller entitet med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som forældreklasser, hvorfra børneklasser er afledt, så børneklassen deler de ufuldstændige funktioner i forældreklassen, og funktionalitet kan tilføjes for at fuldføre dem.

Abstrakte klasser kan indeholde abstrakte metoder. Underklasser, der udvider en abstrakt klasse, kan implementere disse (arvede) abstrakte metoder. Hvis børneklassen implementerer alle sådanne abstrakte metoder, er det en konkret klasse. Men hvis den ikke gør det, bliver børneklassen også en abstrakt klasse. Hvad alt dette betyder er, at når programmøren nominerer en klasse som et abstrakt, siger hun, at klassen vil være ufuldstændig, og den vil have elementer, der skal udfyldes af de nedarvede underklasser. Dette er en fin måde at skabe en kontrakt mellem to programmører på, hvilket forenkler opgaver inden for softwareudvikling. Programmøren, som skriver kode for at arve, skal følge metodedefinitionerne nøjagtigt (men kan selvfølgelig have sin egen implementering).

Hvad er arv?

Inheritance er et objektorienteret koncept, som tillader nye klasser at udvide andre klasser. Extends nøgleord bruges til at implementere begrebet arv i programmeringssproget Java. Nedarvning giver i det væsentlige kodegenbrug ved at tillade udvidelse af egenskaber og adfærd for en eksisterende klasse med en nydefineret klasse. Når en ny underklasse (eller afledt klasse) udvider en superklasse (eller overordnet klasse), vil denne underklasse arve alle superklassens attributter og metoder. Underklassen kan valgfrit tilsidesætte adfærden (give ny eller udvidet funktionalitet til metoder), der er arvet fra den overordnede klasse. Typisk kan en underklasse ikke udvide flere superklasser (f.eks. i Java). Derfor kan du ikke bruge forlænger til multipel arv. For at have multipel arv skal du bruge grænseflader.

Hvad er forskellen mellem abstrakt klasse og arv?

Abstrakte klasser repræsenterer norm alt et abstrakt koncept eller en enhed med delvis eller ingen implementering. Arv giver nye klasser mulighed for at udvide andre klasser. Fordi abstrakte klasser ikke kan instansieres, skal du bruge begrebet arv for at gøre brug af abstrakte klasser. Ellers har en abstrakt klasse ingen nytte. Abstrakte klasser kan indeholde abstrakte metoder, og når klassen udvides, nedarves alle metoder (abstrakte og konkrete). Den nedarvede klasse kan implementere enhver eller alle metoderne. Hvis alle abstrakte metoder ikke er implementeret, bliver den klasse også en abstrakt klasse. En klasse kan ikke arve fra mere end én abstrakt klasse (dette er ikke en kvalitet af abstrakte klasser i sig selv, men snarere en begrænsning af arv).

Relaterede indlæg:

Image
Image
Image
Image

Forskellen mellem abstrakt klasse og konkret klasse

Image
Image
Image
Image

Forskellen mellem virtuelt og abstrakt

Image
Image
Image
Image

Forskellen mellem abstrakt klasse og grænseflade

Image
Image
Image
Image

Forskel mellem redskaber og udvidelser

Image
Image
Image
Image

Forskel mellem graf og træ

Fileret under: Programmering tagget med: ABC, abstrakt, Abstrakt basisklasser, Abstrakt klasse, Abstrakte klasser, Abstrakt søgeord, Abstrakte metoder, konkret klasse, Udvider søgeord, Arv, Arv klasse, nedarvet klasse, Java, multipel arv, objektorienterede koncepter, almindelig klasse, superklasse

Billede
Billede

Om forfatteren: Indika

Indika, BSc. Eng, MSECE Computer Engineering, PhD. Computer Science, er adjunkt og har forskningsinteresser inden for områderne bioinformatik, beregningsbiologi og biomedicinsk naturlig sprogbehandling.

Kommentarer

  1. Billede
    Billede

    Jason siger

    30. august 2017 kl. 13.25

    Tak, fordi du forklarer forskellen. Alle mine spørgsmål er blevet løst ved dette.

    Svar

  2. Billede
    Billede

    Aus siger

    10. maj 2019 kl. 15.04

    bedste svar på nettet, læreren forklarer ikke noget lort og giver ingen mening, monotone mf. Sådan forklarer du begreber.

    Svar

Send et svar Annuller svar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret med

Kommentar

Navn

E-mail

Websted

Anmod om artikel
Anmod om artikel
Anmod om artikel
Anmod om artikel

Udvalgte indlæg

Forskellen mellem Coronavirus og forkølelsessymptomer
Forskellen mellem Coronavirus og forkølelsessymptomer

Forskel mellem Coronavirus og forkølelsessymptomer

Forskellen mellem Coronavirus og SARS
Forskellen mellem Coronavirus og SARS

Forskellen mellem Coronavirus og SARS

Forskellen mellem Coronavirus og influenza
Forskellen mellem Coronavirus og influenza

Forskellen mellem Coronavirus og influenza

Forskellen mellem Coronavirus og Covid 19
Forskellen mellem Coronavirus og Covid 19

Forskellen mellem Coronavirus og Covid 19

Du kan lide

Forskellen mellem Siberian Husky og Malamute

Forskellen mellem Calculus AB og BC

Anbefalede: