Skillnad mellan abstrakt klass och betongklass

Anonim

Abstract Class vs Concrete Class

De flesta av de populära moderna objektorienterade programmeringsspråken som Java och C # är klassbaserade. De uppnår objektorienterade begrepp som inkapsling, arv och polymorfism genom användningen av klasser. Klasser är en abstrakt representation av verkliga världsobjekt. Klasser kan vara antingen konkreta eller abstrakta beroende på graden av genomförande av deras metodfunktionaliteter. En konkret klass genomför fullständigt alla dess 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. Vanligen betecknas konkreta klasser som (bara) klasser.

Vad är betongklass?

Standardklassen är en konkret klass. Klassens sökord används för att definiera klasser (t.ex. i Java). Och vanligtvis kallas de helt enkelt som klasser (utan adjektivbetong). Betongklasser visar den konceptuella representationen av verkliga världsobjekt. Klasser har egenskaper som heter attribut. Attributen implementeras som globala och instansvariabler. Metoder i klasserna representerar eller definierar beteendet hos dessa klasser. Metoder och attribut för klasser kallas klassens medlemmar. Typiskt uppnås inkapsling genom att göra attributen privata, samtidigt som man skapar offentliga metoder som kan användas för att få tillgång till dessa attribut. Ett objekt är förekomsten av en klass. Erfarenhet gör att användaren kan förlänga klasser (kallad underklasser) från andra klasser (kallad superklasser). Polymorfism tillåter programmeraren att ersätta ett objekt av en klass i stället för ett objekt av sin superklass. Vanligtvis blir substantiverna i problemdefinitionen direkt klasser i programmet. Och på samma sätt blir verben metoder. Offentliga, privata och skyddade är de typiska åtkomstmodifierare som används för klasser.

Vad är abstrakt klass?

Abstrakta klasser är deklarerade med abstrakt nyckelord (t.ex. i Java,). Vanligtvis kan abstrakta klasser, även kända som abstrakta basklasser (ABC), inte instantieras (en förekomst av den klassen kan inte skapas). Så, abstrakta klasser är bara meningsfulla att ha om programmeringsspråket stöder arv (förmåga att skapa underklasser från att utöka en klass). Abstrakta klasser representerar vanligtvis ett abstrakt begrepp eller enhet med partiell eller ingen implementering. Därför fungerar abstrakta klasser som föräldrakurser från vilka barnklasser härleds så att barnklassen kommer att dela de ofullständiga funktionerna i förälderklassen och funktionaliteten kan läggas till för att komplettera dem.

Abstrakta klasser kan innehålla abstrakta metoder. Underklasser som omfattar en abstrakt klass kan implementera dessa (ärftliga) abstrakta metoder.Om barnklassen genomför alla sådana abstrakta metoder blir det en konkret klass. Men om det inte gör, 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 det kommer att ha element som måste fyllas i av de arvande underklassen. Det här är ett trevligt sätt att skapa ett kontrakt mellan två programmerare, vilket förenklar uppgifterna i mjukvaruutveckling. Programmeraren, som skriver kod för att ärva, måste följa metoddefinitionerna exakt (men självklart kan ha sin egen implementering).

Vad är skillnaden mellan abstrakt klass och betongklass?

Abstrakta klasser brukar ha delvis eller inget genomförande. Å andra sidan har betongklasser alltid ett fullständigt genomförande av sitt beteende. Till skillnad från konkreta klasser kan abstrakta klasser inte instanseras. 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, är alla metoder (både abstrakta och konkreta) ärvda. Den ärftliga klassen kan genomföra någon eller alla metoder. Om alla abstrakta metoder inte implementeras, blir den klassen också en abstrakt klass.