Introduktion til abstrakte klasser i JavaScript

JavaScript er et objektorienteret sprog, da de fleste af elementerne i javascript er objekter, der forventer de primitive datatyper.

I Objektorienteret programmering (OOP) er abstraktionskonceptet at skjule implementeringsdetaljerne og vise væsentlige egenskaber ved objektet for dets brugere. Denne abstraktionsfunktion af OOP forbedrer forståelsen og vedligeholdeligheden af ​​koden, vi skriver, og reducerer duplikationen af ​​koden. Da abstraktion det meste af tiden bruges i programmeringssprog som Java, anvender vi denne funktion i JavaScript.

I abstrakte klasser i JavaScript-blogindlæg diskuterer vi abstrakte klasser i JavaScript. Før vi dykker ned i implementeringen af ​​abstrakt klasse i JavaScript, kan vi forstå, hvad abstrakte klasser er.

Hvad er abstrakte klasser?

  • Abstrakte klasser kan defineres som klasser, der ikke kan instantieres, dvs. hvis objektreference ikke kan oprettes og indeholder inde i det, en eller flere abstrakte metoder.
  • En abstrakt metode er en metode, der kun kan erklæres, men som ikke har nogen implementering af den. Abstrakte klasser skal nedarves og kræver underklasser for at give implementeringer af den metode, der er angivet i den abstrakte klasse.
  • Ligesom i Java har vi det abstrakte nøgleord til at gøre en klasse til en abstrakt klasse, der er ingen sådanne reserve-nøgleord i JavaScript til at erklære en klasse til en abstrakt klasse.
  • I nedenstående eksempel koder vi et par linjer i JavaScript for at kontrollere, om vi kan oprette en abstrakt klasse og se, om vi kan tilfredsstille dens egenskaber eller ej.

Eksempler på abstrakt klasse i JavaScript

Lad os se nogle af eksemplerne ved hjælp af programkode

Eksempel 1: Abstrakt klasseskabelse

Kode:



//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();

Output -

Forklaring af ovenstående kode

I ovenstående kodescenarie har vi oprettet en konstruktorfunktion Medarbejder, der fungerer som en abstrakt klasse. Vi har også oprettet en displayfunktion til at kontrollere medarbejderens navn. I den sidste linje i JavaScript opretter vi en objektreference eller en instans (medarbejder) i vores abstrakte klasse Medarbejder for at kontrollere, om objektet oprettes, eller der vises en fejl gennem displayfunktionen.

Nu ved at udvide ovenstående eksempel yderligere vil vi oprette en anden funktion, der udvider egenskaberne og metoderne for vores abstrakte klasse Medarbejder. Med hensyn til Java opretter vi en underklasse, og vores medarbejder vil være superklassen.

Eksempel 2: Udvidelse af abstrakt klasse

Kode:



//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

Forklaring af ovenstående kode

I ovenstående kodeeksempel opnåede vi abstraktion ved at oprette en funktion / klasseleder, der udvider vores abstrakte klasse Medarbejder gennem prototypekæden (et vigtigt koncept i JavaScript, hvorved arv opnås). Implementeringsdetaljer er skjult for brugeren og får kun adgang til de funktioner, der opfylder hans / hendes krav.

I ovenstående eksempler 1 og 2 har vi været i stand til at opnå abstraktion, selvom vi virkelig ikke har tilfredsstillet alle egenskaberne ved den abstrakte klasse. I henhold til definitionen af ​​abstrakte klasser kan dens objekt ikke oprettes og bør have en eller flere abstrakte metoder.

Med frigivelsen af ​​ES6 blev JavaScript meget enklere og introducerede nye funktioner i klasser som i Java og dens yderligere funktioner. Lad os se et eksempel nedenfor, hvor vi implementerer en klasse i JavaScript sammen med abstraktionsegenskaber.

Eksempel 3: Abstrakt klasse - Den komplette kode

Kode:



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();

Output 1 - Korrekt output

Output 2 - Kommenter super.display ()

Output 3 - Kommentar var emp = ny medarbejder ()

Forklaring af ovenstående kode

Ovenstående kodeuddrag ligner næsten en java-kode med klasser, konstruktører, metoder og objekter, der defineres. Dette er magi ved frigivelse af ES6. Når vi nu vender tilbage til koden, kan vi se, at medarbejderklassen er en abstrakt klasse og viser fejl, når dens objekt oprettes (Output 3) og indeholder en abstrakt metodedisplay (), hvis implementering er defineret i display () -metoden til Manager klasse, der udvider egenskaberne og metoderne for medarbejderklassen.

Konklusion

Vi er nødt til at huske, mens det drejer sig om abstraktion, at man ikke kan skabe et eksempel på en abstrakt klasse. Afslutningsvis lærte vi, hvordan abstraktion et OOP-koncept kan implementeres i JavaScript og i stand til at implementere en abstrakt klasse, hvor alle dens egenskaber er tilfredse.

Anbefalede artikler

Dette er en guide til abstrakte klasser i JavaScript. Her diskuterer vi introduktionen til abstrakte klasser i JavaScript, Hvad er abstrakte klasser sammen med passende eksempler. Du kan også gennemgå vores andre foreslåede artikler for at lære mere–

  1. Hvad er nyt i Java 8?
  2. Overstyring i OOP'er
  3. Python-alternativer
  4. Typer af UML-diagrammer
  5. PHP-nøgleord
  6. PL / SQL-datatyper
  7. Kast vs kaster | Top 5 forskelle, du burde vide
  8. Forskellige Top 36 nøgleord i SQL med eksempler
  9. Vejledning til forskellige C # Datatyper
  10. Forskellige typer af SQL-data med eksempler

Kategori: