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

JavaScript - это объектно-ориентированный язык, так как большинство элементов в javascript являются объектами, ожидающими примитивные типы данных.

В объектно-ориентированном программировании (ООП) концепция абстракции заключается в том, чтобы скрыть детали реализации и продемонстрировать существенные особенности объекта для его пользователей. Эта функция абстракции ООП повышает понятность и удобство сопровождения кода, который мы пишем, и уменьшает дублирование кода. Поскольку абстракция в большинстве случаев используется в таких языках программирования, как 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 мы создаем ссылку на объект или экземпляр (employee) нашего абстрактного класса Employee, чтобы проверить, создается ли объект или отображается ли ошибка с помощью функции display.

Теперь, расширяя приведенный выше пример, мы создадим еще одну функцию, которая расширяет свойства и методы нашего абстрактного класса Employee. С точки зрения 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());

Выход

Объяснение приведенного выше кода

В приведенном выше примере кода мы достигли абстракции, создав менеджер функции / класса, который расширяет наш абстрактный класс Employee посредством цепочки прототипов (важная концепция в 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.

Вывод

При работе с абстракцией нужно помнить, что нельзя создать экземпляр абстрактного класса. В заключение мы узнали, как абстракция концепции ООП может быть реализована в 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 с примерами