Forskellen Mellem Abstrakt Klasse Og Interface

Forskellen Mellem Abstrakt Klasse Og Interface
Forskellen Mellem Abstrakt Klasse Og Interface

Video: Forskellen Mellem Abstrakt Klasse Og Interface

Video: Forskellen Mellem Abstrakt Klasse Og Interface
Video: Абстрактные классы и интерфейсы 2024, April
Anonim

Abstrakt klasse vs grænseflade

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 almindelig (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 som kan udvides. Interface er en type, der skal implementeres af andre klasser. I Java erklæres abstrakte klasser ved hjælp af abstrakt nøgleord, mens grænseflade nøgleordet bruges til at definere en grænseflade.

Hvad er en abstrakt klasse?

Typisk kan abstrakte klasser, også kendt som abstrakte baseklasser (ABC), ikke instantieres (en forekomst af denne klasse kan ikke oprettes). Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evne til at oprette underklasser fra at udvide en klasse). Abstrakte klasser repræsenterer normalt et abstrakt koncept eller enhed med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som overordnede klasser, hvorfra barneklasser stammer, så barneklassen deler de ufuldstændige funktioner i overordnede klassen, 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 (nedarvede) abstrakte metoder. Hvis børneklassen implementerer alle sådanne abstrakte metoder, er det en konkret klasse. Men hvis det ikke gør det, bliver børneklassen også en abstrakt klasse. Hvad alt dette betyder er, at når programmøren udnævner en klasse til et abstrakt, siger hun, at klassen vil være ufuldstændig, og at den vil have elementer, der skal udfyldes med de arvende underklasser. Dette er en god måde at oprette en kontrakt mellem to programmører på, hvilket forenkler opgaver inden for softwareudvikling. Programmøren, der skriver kode for at arve, skal følge metodedefinitionerne nøjagtigt (men kan selvfølgelig 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 grænsefladen. Interface-nøgleordet bruges til at definere et interface, og Implements-nøgleord bruges til at implementere en interface af en klasse (på 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 metoder, der er defineret i grænsefladen, eller deklareres som en abstrakt klasse. I Java kan typen af en objektreference defineres som en interfacetype. Men det objekt skal enten være nul eller skal indeholde et objekt i en klasse, som implementerer den pågældende grænseflade. Ved hjælp af Implements-nøgleord i Java kan du implementere flere grænseflader til en enkelt klasse.

Hvad er forskellen mellem abstrakt klasse og interface?

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 skal indeholde abstrakte metoder. Abstrakte klasser kan indeholde alle 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. En grænseflade kan ikke implementere en anden grænseflade. Imidlertid kan en grænseflade udvide en klasse.

Anbefalet: