Introducere în clase abstracte în JavaScript

JavaScript este un limbaj orientat pe obiecte, deoarece majoritatea elementelor din javascript sunt obiecte care se așteaptă la tipurile de date primitive.

În programarea orientată pe obiecte (OOP), conceptul de abstractizare este de a ascunde detaliile de implementare și de a prezenta caracteristicilor esențiale ale obiectului utilizatorilor săi. Această caracteristică de abstractizare a OOP îmbunătățește înțelegerea și mentenabilitatea codului pe care îl scriem și reduce duplicarea codului. Deoarece abstracția este folosită de cele mai multe ori în limbajele de programare precum Java, vom aplica această caracteristică în JavaScript.

În clasele abstracte din postarea de blog JavaScript, vom discuta despre clasele abstracte în JavaScript. Înainte de a ne cufunda în implementarea clasei abstracte în JavaScript, să înțelegem ce sunt clasele abstracte.

Ce sunt clasele abstracte?

  • Clasele abstracte pot fi definite ca clase care nu pot fi inițiate, adică a căror referință la obiect nu poate fi creată și conține în cadrul acesteia, una sau mai multe metode abstracte.
  • O metodă abstractă este o metodă care poate fi declarată numai dar nu are o implementare a acesteia. Clasele abstracte trebuie moștenite și necesită subclase pentru a furniza implementări pentru metoda declarată în clasa abstractă.
  • Ca și în Java, avem cuvântul cheie abstract pentru a face dintr-o clasă o clasă abstractă, nu există astfel de cuvinte cheie de rezervă în JavaScript care să declare o clasă o clasă abstractă.
  • În exemplul de mai jos vom coda câteva rânduri în JavaScript pentru a verifica dacă putem crea o clasă abstractă și pentru a vedea dacă putem satisface proprietățile sale sau nu.

Exemple de clasă abstractă în JavaScript

Să vedem câteva exemple cu ajutorul codului programului

Exemplul # 1: crearea de clase abstracte

Cod:



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

Rezultat -

Explicarea codului de mai sus

În scenariul de cod de mai sus, am creat o funcție de constructor Angajat care acționează ca o clasă abstractă. De asemenea, am creat o funcție de afișare pentru a verifica numele angajatului. În ultima linie a JavaScript, creăm o referință a obiectului sau o instanță (angajat) a clasei noastre abstracte Angajat pentru a verifica dacă obiectul este creat sau o eroare este afișată prin funcția de afișare.

Acum, extinzând exemplul de mai sus vom crea o altă funcție care extinde proprietățile și metodele angajaților clasei noastre abstracte. În ceea ce privește Java, vom crea o subclasă și angajatul nostru va fi superclasa.

Exemplul # 2: Extinderea clasei abstracte

Cod:



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

producție

Explicarea codului de mai sus

În exemplul de cod de mai sus, am obținut abstractizarea prin crearea unui manager de funcții / clase care extinde angajatul clasei noastre abstracte prin lanțul de prototipuri (un concept important în JavaScript, prin care se realizează moștenirea). Detaliile de implementare sunt ascunse de utilizator și accesează doar caracteristicile care satisfac cerințele sale.

În exemplele 1 și 2 de mai sus, am reușit să realizăm abstractizarea, deși nu am satisfăcut cu adevărat toate proprietățile clasei abstracte. Conform definiției claselor abstracte, obiectul său nu poate fi creat și ar trebui să aibă una sau mai multe metode abstracte.

Odată cu lansarea ES6, JavaScript a devenit mult mai simplu și a introdus funcții noi în clase, precum în Java și în funcțiile sale suplimentare. Să vedem mai jos un exemplu în care implementăm o clasă în JavaScript împreună cu proprietățile de abstractizare.

Exemplul # 3: clasa abstractă - codul complet

Cod:



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

Ieșire 1 - Ieșire corectă

Rezultat 2 - Comentariu super.display ()

Rezultat 3 - Comentariu var emp = angajat nou ()

Explicarea codului de mai sus

Snippet-ul de mai sus arată aproape ca un cod java, cu clase, constructori, metode și obiecte definite, aceasta este magia eliberării ES6. Revenind acum la cod, putem vedea că clasa Angajat este o clasă abstractă și afișează eroare atunci când obiectul său este creat (Ieșire 3) și conține o afișare a metodei abstracte () a cărei implementare este definită în metoda display () a Managerului clasă care extinde proprietățile și metodele clasei Angajat.

Concluzie

Trebuie să avem în vedere, în timp ce ne ocupăm de abstractizare, este faptul că nu se poate crea o instanță a unei clase abstracte. În concluzie, am aflat cum abstracția poate fi implementată un concept OOP în JavaScript și în măsură să implementăm o clasă abstractă cu toate proprietățile sale fiind satisfăcute.

Articole recomandate

Acesta este un ghid pentru clasele abstracte în JavaScript. Aici vom discuta introducerea la clasele abstracte în JavaScript, Ce sunt clasele abstracte împreună cu exemple adecvate. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Ce este nou în Java 8?
  2. Suprafață în OOP
  3. Alternative Python
  4. Tipuri de diagrame UML
  5. Cuvinte cheie PHP
  6. Tipuri de date PL / SQL
  7. Aruncă vs Aruncă | Top 5 diferențe pe care ar trebui să le știi
  8. Top 36 Cuvinte cheie în SQL cu exemple
  9. Ghid pentru diferite tipuri de date C #
  10. Diferite tipuri de date SQL cu exemple