Forskel mellem abstrakt klasse og konkret klasse

Anonim

Abstract Class vs Concrete Class

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

Hvad er betonklasse?

Standardklassen er en konkret klasse. Klassesøgeordet bruges til at definere klasser (f.eks. I Java). Og normalt betegnes de simpelthen som klasser (uden adjektivbeton). Betonklasser skildrer den konceptuelle repræsentation af virkelige verdensobjekter. Klasser har egenskaber kaldet attributter. Attributter implementeres som globale og instansvariabler. Metoder i klasserne repræsenterer eller definerer opførelsen af ​​disse klasser. Metoder og attributter af klasser kaldes medlemmerne af klassen. Typisk indkapsling opnås ved at gøre attributterne private, samtidig med at der oprettes offentlige metoder, som kan bruges til at få adgang til disse attributter. Et objekt er forekomsten af ​​en klasse. Arv giver brugeren mulighed for at udvide klasser (kaldet underklasser) fra andre klasser (kaldet superklasser). Polymorfisme giver programmereren mulighed for at erstatte et objekt af en klasse i stedet for et objekt af sin superklasse. Typisk er substantiverne, der findes i problemdefinitionen, direkte blevet klasser i programmet. Og tilsvarende bliver verb'er metoder. Offentlige, private og beskyttede er de typiske adgangsmodifikatorer, der anvendes til klasser.

Hvad er abstrakt klasse?

Abstrakte klasser erklæres ved hjælp af abstrakt søgeord (f.eks. I Java). Typisk kan abstrakte klasser, også kendt som abstrakte basisklasser (ABC), ikke instantieres (en forekomst af denne klasse kan ikke oprettes). Så, abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evnen til at oprette undergrupper fra at udvide en klasse). Abstrakte klasser repræsenterer normalt et abstrakt begreb eller enhed med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som forældrenes klasser, hvorfra børnesklasserne er afledt, så barneklassen deler de ufuldstændige træk i forældrenes klasse 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 barnklassen implementerer alle sådanne abstrakte metoder, bliver det en konkret klasse. Men hvis det ikke gør det, bliver barneklassen 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 arvelige underklasser. Dette er en god måde at skabe en kontrakt mellem to programmører, hvilket forenkler opgaver i softwareudvikling. Programmøren, der skriver kode for at arve, skal følge metoden definitionerne nøjagtigt (men selvfølgelig kan have sin egen implementering).

Hvad er forskellen mellem abstrakt klasse og konkret klasse?

Abstrakte klasser har normalt delvis eller ingen implementering. På den anden side har konkrete klasser altid fuld gennemførelse af dens adfærd. I modsætning til konkrete klasser kan abstrakte klasser ikke oprettes. 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 forlænges, arves alle metoder (både abstrakte og konkrete). Den arvelige klasse kan implementere nogen eller alle metoderne. Hvis alle de abstrakte metoder ikke implementeres, bliver den klasse også en abstrakt klasse.