Introduktion till abstrakta klasser i JavaScript

JavaScript är ett objektorienterat språk eftersom de flesta av elementen i javascript är objekt förväntar sig de primitiva datatyperna.

I Objektorienterad programmering (OOP) är begreppet abstraktion att dölja implementeringsdetaljer och visa väsentliga egenskaper hos objektet för sina användare. Denna abstraktionsfunktion för OOP förbättrar förståelsen och underhållbarheten för koden vi skriver och minskar dupliceringen av koden. Eftersom abstraktion oftast används i programmeringsspråk som Java, kommer vi att använda den här funktionen i JavaScript.

I abstrakt klasser i JavaScript-blogginlägg diskuterar vi abstrakta klasser i JavaScript. Innan vi dyker in i implementeringen av abstrakt klass i JavaScript låter vi förstå vad abstrakta klasser är.

Vad är abstrakta klasser?

  • Abstrakta klasser kan definieras som klasser som inte kan instanseras, dvs vars objektreferens inte kan skapas och innehåller inom det, en eller flera abstrakta metoder.
  • En abstrakt metod är en metod som bara kan deklareras men som inte har någon implementering av den. Abstrakta klasser måste ärvas och kräva underklasser för att tillhandahålla implementeringar av metoden som deklareras i den abstrakta klassen.
  • Liksom i Java har vi det abstrakta nyckelordet för att göra en klass till en abstrakt klass, det finns inga sådana reservord i JavaScript för att förklara en klass som en abstrakt klass.
  • I exemplet nedan kodar vi några rader i JavaScript för att kontrollera om vi kan skapa en abstrakt klass och se om vi kan tillfredsställa dess egenskaper eller inte.

Exempel på abstrakt klass i JavaScript

Låt oss se några av exemplen med hjälp av programkod

Exempel 1: Abstrakt klassskapning

Koda:



//Created an abstract class (constructor function)
function Employee()
(
this.empName= "empName";
if(this.constructor === Employee)(
throw new Error("FYI: Instance of Abstract class cannot be instantiated");
)
) ;
// Method (function) of our abstract class
Employee.prototype.display=function()
( return this.empName; )
var employee = new Employee();

Utgång -

Förklaring av koden ovan

I ovanstående kodscenario har vi skapat en konstruktörsfunktion Anställd som fungerar som en abstrakt klass. Vi har också skapat en visningsfunktion för att kontrollera anställdas namn. I den sista raden i JavaScript skapar vi en objektreferens eller en instans (anställd) för vår abstrakta klass Medarbetare för att kontrollera om objektet skapas eller att ett fel visas genom visningsfunktionen.

Genom att utöka exemplet ovan ytterligare kommer vi att skapa en annan funktion som utökar egenskaperna och metoderna för vår abstrakta klass anställd. När det gäller Java kommer vi att skapa en underklass och vår anställd är superklass.

Exempel 2: Utöka abstrakt klass

Koda:



//Created an abstract class (constructor function)
function Employee()
(
this.empName="empName";
if(this.constructor === Employee)(
throw new Error("You cannot create an instance of Abstract Class");
)
);
// Method (function) of our abstract class
Employee.prototype.display=function()
(
return "Employee name is: "+this.empName;
)
//Created a subclass (constructor function)
function Manager(fullName)
(
this.empName=fullName;
)
//Created an object of subclass (extending abstract class)
Manager.prototype=Object.create(Employee.prototype);
var mang=new Manager("Aniket Davda");
console.log(mang.display());

Produktion

Förklaring av koden ovan

I ovanstående kodexempel uppnådde vi abstraktion genom att skapa en funktion / klasschef som utvidgar vår abstrakta klass Medarbetare genom prototypkedjan (ett viktigt koncept i JavaScript, genom vilket arv uppnås). Implementeringsdetaljerna är dolda för användaren och får endast åtkomst till de funktioner som uppfyller hans / hennes krav.

I ovanstående exempel 1 och 2 har vi kunnat uppnå abstraktion, även om vi verkligen inte har tillfredsställt alla egenskaperna hos den abstrakta klassen. Enligt definitionen av abstrakta klasser kan dess objekt inte skapas och borde ha en eller flera abstrakta metoder.

Med lanseringen av ES6 blev JavaScript mycket enklare och introducerade nya funktioner i klasser som i Java och dess ytterligare funktioner. Låt oss se ett exempel nedan där vi implementerar en klass i JavaScript tillsammans med abstraktionsegenskaper.

Exempel 3: Abstrakt klass - den fullständiga koden

Koda:



class Employee
(
constructor() (
if(this.constructor == Employee)(
throw new Error(" Object of Abstract Class cannot be created");
)
)
display()(
throw new Error("Abstract Method has no implementation");
)
)
class Manager extends Employee
(
display()(
//super.display();
console.log("I am a Manager");
)
)
//var emp = new Employee;
var mang=new Manager();
mang.display();

Utgång 1 - Rätt utgång

Output 2 - Kommentera super.display ()

Output 3 - Kommentera var emp = ny anställd ()

Förklaring av koden ovan

Ovanstående kodavsnitt ser nästan ut som en java-kod med klasser, konstruktörer, metoder och objekt som definieras, detta är magin för frisläppandet av ES6. Nu när vi kommer tillbaka till koden kan vi se att anställdsklassen är en abstrakt klass och visar fel när dess objekt skapas (utgång 3) och innehåller en abstrakt metodvisning () vars implementering är definierad i metoden för visning () för Manager klass som utvidgar egenskaperna och metoderna för anställdsklassen.

Slutsats

Vi måste komma ihåg när man arbetar med abstraktion är att man inte kan skapa en instans av en abstrakt klass. Sammanfattningsvis lärde vi oss hur abstraktion ett OOP-koncept kan implementeras i JavaScript och kunna implementera en abstrakt klass där alla dess egenskaper är nöjda.

Rekommenderade artiklar

Detta är en guide till abstrakta klasser i JavaScript. Här diskuterar vi introduktionen till abstrakta klasser i JavaScript, Vad är abstrakta klasser tillsammans med lämpliga exempel. Du kan också gå igenom våra andra artiklar som föreslås för att lära dig mer–

  1. Vad är nytt i Java 8?
  2. Övergripande i OOP
  3. Pythonalternativ
  4. Typer av UML-diagram
  5. PHP-nyckelord
  6. PL / SQL-datatyper
  7. Kast vs kastar | Topp 5 skillnader du borde veta
  8. Olika Top 36-nyckelord i SQL med exempel
  9. Guide till olika C # Datatyper
  10. Olika typer av SQL-data med exempel

Kategori: