Forskellen mellem abstrakt klasse og konkret klasse

Forskellen mellem abstrakt klasse og konkret klasse
Forskellen mellem abstrakt klasse og konkret klasse

Video: Forskellen mellem abstrakt klasse og konkret klasse

Video: Forskellen mellem abstrakt klasse og konkret klasse
Video: What is a Proxy Server? 2024, November
Anonim

Abstract Class vs Concrete Class

De fleste af de populære moderne objektorienterede programmeringssprog som Java og C er klassebaserede. De opnår de objektorienterede begreber som indkapsling, arv og polymorfi gennem brug af klasser. Klasser er en abstrakt repræsentation af objekter i den virkelige verden. Klasser kan være enten konkrete eller abstrakte afhængigt af implementeringsniveauet af deres metodefunktioner. En konkret klasse implementerer fuldstændigt alle sine metoder. En abstrakt klasse kan betragtes som en begrænset version af en almindelig (konkret) klasse, hvor den kan indeholde delvist implementerede metoder. Typisk omtales betonklasser som (bare) klasser.

Hvad er betonklasse?

Standardklassen er en konkret klasse. Klassenøgleordet bruges til at definere klasser (f.eks. i Java). Og norm alt omtales de blot som klasser (uden adjektivet konkret). Konkrete klasser skildrer den konceptuelle repræsentation af objekter i den virkelige verden. Klasser har egenskaber kaldet attributter. Attributter implementeres som globale og instansvariabler. Metoder i klasserne repræsenterer eller definerer disse klassers adfærd. Metoder og attributter for klasser kaldes medlemmer af klassen. Typisk opnås indkapsling ved at gøre attributterne private, mens der skabes offentlige metoder, der kan bruges til at få adgang til disse attributter. Et objekt er instansen af en klasse. Nedarvning giver brugeren mulighed for at udvide klasser (kaldet underklasser) fra andre klasser (kaldet superklasser). Polymorfi tillader programmøren at erstatte et objekt i en klasse i stedet for et objekt i dens superklasse. Typisk bliver de navneord, der findes i problemdefinitionen, direkte klasser i programmet. Og på samme måde bliver verber til metoder. Offentlige, private og beskyttede er de typiske adgangsmodifikatorer, der bruges til klasser.

Hvad er abstrakt klasse?

Abstrakte klasser erklæres ved hjælp af abstrakt nøgleord (f.eks. i Java,). 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, bliver 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 forskellen mellem abstrakt klasse og betonklasse?

Abstrakte klasser har norm alt delvis eller ingen implementering. På den anden side har konkrete klasser altid fuld implementering af sin adfærd. I modsætning til konkrete klasser kan abstrakte klasser ikke instansieres. Derfor skal abstrakte klasser udvides for at gøre dem nyttige. Abstrakte klasser kan indeholde abstrakte metoder, men konkrete klasser kan ikke. Når en abstrakt klasse udvides, nedarves alle metoder (både abstrakte og konkrete). Den nedarvede klasse kan implementere enhver eller alle metoderne. Hvis alle de abstrakte metoder ikke er implementeret, bliver den klasse også en abstrakt klasse.

Anbefalede: