Вступ до абстрактних класів у 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 = new Employee ()

Пояснення вищевказаного коду

Вищенаведений фрагмент коду майже схожий на код java з визначеними класами, конструкторами, методами та об'єктами, це магія випуску ES6. Повернувшись до коду, ми можемо побачити, що клас Employee є абстрактним класом і відображає помилку, коли створюється його об'єкт (вихід 3) і містить абстрактний метод display (), реалізація якого визначена методом display () менеджера клас, який розширює властивості та методи класу Employee.

Висновок

Нам потрібно пам’ятати, маючи справу з абстракцією, що не можна створити екземпляр абстрактного класу. На закінчення ми дізналися, як абстрагування концепція OOP може бути реалізована в JavaScript та здатна реалізувати абстрактний клас із задоволенням усіх його властивостей.

Рекомендовані статті

Це посібник з абстрактних класів у JavaScript. Тут ми обговорюємо вступ до абстрактних класів у JavaScript, що таке абстрактні класи разом із відповідними прикладами. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

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