Vad är en abstrakt metod?

I objektorienterad programmering används subrutiner som kallas ”metoder” för att utföra funktioner i ett program. Dessa metoder består av programmeringssatser som utför en åtgärd, ställer in ingångsparametrar för att anpassa åtgärder och kan returnera eller mata ut ett värde för någon sorts objekt eller klass. Metoder är de åtgärder som utförs i ett program från en viss klass eller inom ett objekt, och används för att komma åt och manipulera data som lagras i ett objekt. Det finns många olika metoder och var och en har en speciell användning. En specifik typ som utförs från en abstrakt superklass och ärvs av underklasser är känd som en abstrakt metod.

I allmänhet utför den abstrakta metoden liten eller ingen implementering inom sin abstrakta superklass. Koder som ingår i denna typ av metod betraktas som dummykoder och implementeras inte själva. Detta betyder inte att den specifika abstrakta metoden i en viss abstrakt klass inte används. Den abstrakta metoden fungerar snarare som en modell eller platshållare för underklasser för att avsluta implementeringen av metoden.

Superklasser kan innehålla flera underklasser, och alla underklasser i en superklass har vissa liknande tillstånd och beteenden. Abstrakta klasser är därför en typ av virtuell klass som uppvisar virtuellt arv. Detta betyder att varje underklass som härrör från en superklass ärver restriktionerna för den superklass som den härrör från. Därför härleds metoder i underklasser från abstrakta metoder för superklasser. Vid programmering och användning av abstrakta metoder måste programmeraren deklarera klassen abstrakt snarare än virtuell.

Till exempel innehåller en superklass av ”Graphic Objects” underklasserna ”Circle”, ”Square” etc. Som sådana har alla Circles och Squares samma tillstånd – orientering, position, fyllningsfärg, linjefärg – och beteenden – moveTo , ändra storlek, rotera, rita – som ”grafiska objekt.” Alla underklasser i denna superklass har samma egenskaper, men de implementeras på olika sätt. Den abstrakta metoden för superklassen tillhandahåller grunden utan implementering, och underklasserna utför själva implementeringen med samma metoder. Även om varje underklass använder samma metod som den abstrakta klassen, definierar de unikt sättet på vilket metoden kommer att utföras.

Att använda en abstrakt metod möjliggör generalisering på toppnivå, eller superklass, och specifikation på lägre nivåer, eller underklasser. Denna hierarki minimerar mängden metodprogrammering till varje specifik underklass. Att använda dessa metoder möjliggör också idempotens av underklasser, vilket innebär att om en metod implementeras om och om igen, blir resultatet detsamma varje gång.