Forskel mellem abstrakt klasse og grænseflade

Anonim

Abstrakt Klasse vs Interface

Abstrakt klasse og Interface er to objektorienterede konstruktioner, der findes i mange objektorienterede programmeringssprog som Java. Abstrakt klasse kan betragtes som en abstrakt version af en regelmæssig (konkret) klasse, mens en grænseflade kan betragtes som et middel til at gennemføre en kontrakt. Abstrakt klasse er en klasse, der ikke kan initialiseres, men kan udvides. Interface er en type, der skal implementeres af andre klasser. I Java er abstrakte klasser erklæret ved hjælp af abstrakt søgeord, mens grænsefladesøgeordet bruges til at definere en grænseflade.

Hvad er en abstrakt klasse?

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 barneklassen gennemfører alle sådanne abstrakte metoder, er 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 et interface?

En grænseflade er en abstrakt type, der bruges til at specificere en kontrakt, der skal implementeres af klasser, som implementerer den grænseflade. Interface-søgeordet bruges til at definere en grænseflade, og Implements søgeord bruges til at implementere en grænseflade af en klasse (i Java-programmeringssprog). Normalt vil en grænseflade kun indeholde metodesignaturer og konstante erklæringer. Enhver grænseflade, der implementerer en bestemt grænseflade, skal implementere alle de metoder, der er defineret i grænsefladen, eller skal angives som en abstrakt klasse. I Java kan typen af ​​en objektreference defineres som en grænsefladetype. Men det objekt skal enten være null eller skulle holde et objekt af en klasse, som implementerer den pågældende grænseflade.Ved hjælp af Implements søgeord i Java kan du implementere flere grænseflader til en enkelt klasse.

Hvad er forskellen mellem abstrakt klasse og grænseflade?

Abstrakte klasser repræsenterer normalt et abstrakt koncept eller en enhed med delvis eller ingen implementering. På den anden side er en grænseflade en abstrakt type, der bruges til at specificere en kontrakt, der skal implementeres af klasser. Abstrakte klasser skal arves (eller udvides), mens grænseflader skal implementeres. Abstrakte klasser kan indeholde abstrakte metoder, mens en grænseflade kun bør indeholde abstrakte metoder. Abstrakte klasser kan indeholde eventuelle variabler, men grænseflader kan kun definere konstanter. En klasse kan ikke arve fra mere end en abstrakt klasse, men kan implementere flere grænseflader. Et grænseflade kan ikke implementere en anden grænseflade. Men en grænseflade kan forlænge en klasse.