Въведение в абстрактните класове в 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, какви са абстрактни класове заедно с подходящи примери. Можете също да прегледате и другите ни предложени статии, за да научите повече -
- Какво е новото в Java 8?
- Повишаване в OOPs
- Алтернативи на Python
- Видове UML диаграми
- PHP Ключови думи
- Типове данни PL / SQL
- Хвърли срещу Хвърли | Топ 5 разлики, които трябва да знаете
- Различни топ 36 ключови думи в SQL с примери
- Ръководство за различни типове данни C #
- Различни видове SQL данни с примери