Abstraktklass vs Betongklass
De flesta av de populära moderna objektorienterade programmeringsspråken som Java och C är klassbaserade. De uppnår de objektorienterade koncepten som inkapsling, arv och polymorfism genom användning av klasser. Klasser är en abstrakt representation av verkliga objekt. Klasser kan vara antingen konkreta eller abstrakta beroende på graden av implementering av deras metodfunktioner. En konkret klass implementerar fullständigt alla sina metoder. En abstrakt klass kan betraktas som en begränsad version av en vanlig (konkret) klass, där den kan innehålla delvis implementerade metoder. Vanligtvis kallas betongklasser (bara) klasser.
Vad är betongklass?
Standardklassen är en konkret klass. Klassnyckelordet används för att definiera klasser (t.ex. i Java). Och vanligtvis kallas de helt enkelt klasser (utan adjektivet konkret). Konkreta klasser skildrar den konceptuella representationen av verkliga objekt. Klasser har egenskaper som kallas attribut. Attribut implementeras som globala variabler och instansvariabler. Metoder i klasserna representerar eller definierar beteendet hos dessa klasser. Metoder och attribut för klasser kallas medlemmarna i klassen. Vanligtvis uppnås inkapsling genom att göra attributen privata, samtidigt som man skapar offentliga metoder som kan användas för att komma åt dessa attribut. Ett objekt är instansen av en klass. Arv tillåter användaren att utöka klasser (kallade underklasser) från andra klasser (kallade superklasser). Polymorfism tillåter programmeraren att ersätta ett objekt i en klass i stället för ett objekt i dess superklass. Norm alt blir substantiven som finns i problemdefinitionen direkt klasser i programmet. Och på liknande sätt blir verb metoder. Offentliga, privata och skyddade är de typiska åtkomstmodifierare som används för klasser.
Vad är abstrakt klass?
Abstrakta klasser deklareras med hjälp av abstrakt nyckelord (t.ex. i Java,). Vanligtvis kan abstrakta klasser, även kända som abstrakta basklasser (ABC), inte instansieras (en instans av den klassen kan inte skapas). Så abstrakta klasser är bara meningsfulla att ha om programmeringsspråket stöder arv (möjlighet att skapa underklasser genom att utöka en klass). Abstrakta klasser representerar vanligtvis ett abstrakt koncept eller entitet med partiell eller ingen implementering. Därför fungerar abstrakta klasser som överordnade klasser från vilka underordnade klasser härleds så att den underordnade klassen kommer att dela de ofullständiga funktionerna i föräldraklassen och funktionalitet kan läggas till för att slutföra dem.
Abstrakta klasser kan innehålla abstrakta metoder. Underklasser som utökar en abstrakt klass kan implementera dessa (ärvda) abstrakta metoder. Om barnklassen implementerar alla sådana abstrakta metoder blir det en konkret klass. Men om det inte gör det blir barnklassen också en abstrakt klass. Vad allt detta betyder är att när programmeraren nominerar en klass som en abstrakt, säger hon att klassen kommer att vara ofullständig och den kommer att ha element som måste kompletteras av de ärvda underklasserna. Detta är ett trevligt sätt att skapa ett kontrakt mellan två programmerare, vilket förenklar uppgifter inom mjukvaruutveckling. Programmeraren, som skriver kod för att ärva, måste följa metoddefinitionerna exakt (men kan naturligtvis ha sin egen implementering).
Vad är skillnaden mellan abstrakt klass och betongklass?
Abstrakta klasser har vanligtvis delvis eller ingen implementering. Å andra sidan har betongklasser alltid full implementering av sitt beteende. Till skillnad från konkreta klasser kan abstrakta klasser inte instansieras. Därför måste abstrakta klasser utökas för att göra dem användbara. Abstrakta klasser kan innehålla abstrakta metoder, men konkreta klasser kan inte. När en abstrakt klass utökas, ärvs alla metoder (både abstrakta och konkreta). Den ärvda klassen kan implementera vilken som helst eller alla metoder. Om alla abstrakta metoder inte implementeras, blir den klassen också en abstrakt klass.