Въведение в абстрактните класове в JavaScript

JavaScript е обектно-ориентиран език, тъй като повечето елементи в javascript са обекти, които очакват примитивните типове данни.

В обектно-ориентираното програмиране (OOP) концепцията за абстракция е да скрие детайлите за внедряване и да покаже на потребителите си съществени характеристики на обекта. Тази функция на абстракция на OOP повишава разбираемостта и поддържането на кода, който пишем, и намалява дублирането на кода. Тъй като абстракцията се използва най-често в езици за програмиране като Java, ние ще приложим тази функция в JavaScript.

В абстрактни класове в публикация в блога на JavaScript ще обсъждаме абстрактни класове в JavaScript. Преди да се потопим в прилагането на абстрактния клас в JavaScript, нека да разберем какви са абстрактните класове.

Какво представляват абстрактните класове?

  • Абстрактните класове могат да бъдат дефинирани като класове, които не могат да бъдат инстанцирани, т.е. чийто референтен обект не може да бъде създаден и съдържа в него един или повече абстрактни методи.
  • Абстрактен метод е метод, който може да бъде деклариран само, но няма прилагане към него. Абстрактните класове трябва да бъдат наследени и да изискват подкласове да предоставят реализации за метода, деклариран в абстрактния клас.
  • Както в Java, ние имаме абстрактната ключова дума, за да направим клас абстрактен клас, в JavaScript няма такива резервни ключови думи, които да декларират клас за абстрактен клас.
  • В примера по-долу ще кодираме няколко реда в JavaScript, за да проверим дали можем да създадем абстрактен клас и да видим дали можем да задоволим неговите свойства или не.

Примери за абстрактен клас в JavaScript

Нека видим някои от примерите с помощта на програмния код

Пример №1: Създаване на абстрактни класове

Код:



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

Резултат -

Обяснение на горния код

В горния сценарий на кода сме създали една конструкторска функция Employee, която действа като абстрактен клас. Създадохме и функция за показване, за да проверим името на служителя. В последния ред на JavaScript създаваме референция на обект или екземпляр (служител) на нашия абстрактен клас Служител, за да проверим дали обектът е създаден или е показана грешка чрез дисплейната функция.

Сега, разширявайки горния пример по-нататък, ще създадем още една функция, която разширява свойствата и методите на нашия служител от абстрактния клас. По отношение на Java, ние ще създадем подклас и нашият Служител ще бъде суперкласът.

Пример №2: Разширяване на абстрактния клас

Код:



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

продукция

Обяснение на горния код

В горния пример за кодове, ние постигнахме абстракция чрез създаване на мениджър на функции / класове, който разширява нашия абстрактен клас Служител чрез веригата прототип (важна концепция в JavaScript, чрез която се постига наследяване). Подробности за внедряването ни са скрити от потребителя и имат достъп само до функциите, които отговарят на неговите изисквания.

В горните примери 1 и 2 успяхме да постигнем абстракция, въпреки че всъщност не сме удовлетворили всички свойства на абстрактния клас. Според определението на абстрактни класове, неговият обект не може да бъде създаден и трябва да има един или повече абстрактни методи.

С пускането на ES6 JavaScript стана много по-опростен и въведе в него нови функции на класове, както в Java и неговите допълнителни функции. Нека да видим пример по-долу, където прилагаме клас в JavaScript, заедно със свойства на абстракция.

Пример №3: Абстрактен клас - Пълният код

Код:



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

Изход 1 - Правилен изход

Резултат 2 - Коментирайте super.display ()

Резултат 3 - Коментирайте var emp = нов служител ()

Обяснение на горния код

Горният фрагмент на код почти прилича на java код с дефинирани класове, конструктори, методи и обекти, това е магия за освобождаване на ES6. Връщайки се към кода, можем да видим, че класът Employee е абстрактен клас и показва грешка при създаването на обекта му (изход 3) и съдържа абстрактен метод display (), чиято реализация е дефинирана в метода display () на Manager клас, който разширява свойствата и методите на класа Служител.

заключение

Трябва да имаме предвид, когато се занимаваме с абстракция е, че човек не може да създаде екземпляр от абстрактен клас. В заключение научихме как абстракцията на OOP концепция може да бъде реализирана в JavaScript и да може да реализира абстрактен клас с всичките му свойства.

Препоръчителни статии

Това е ръководство за абстрактни класове в JavaScript. Тук обсъждаме въвеждането на абстрактните класове в JavaScript, какви са абстрактни класове заедно с подходящи примери. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. Какво е новото в Java 8?
  2. Повишаване в OOPs
  3. Алтернативи на Python
  4. Видове UML диаграми
  5. PHP Ключови думи
  6. Типове данни PL / SQL
  7. Хвърли срещу Хвърли | Топ 5 разлики, които трябва да знаете
  8. Различни топ 36 ключови думи в SQL с примери
  9. Ръководство за различни типове данни C #
  10. Различни видове SQL данни с примери