Wprowadzenie do klas abstrakcyjnych w JavaScript

JavaScript jest językiem zorientowanym obiektowo, ponieważ większość elementów w javascript to obiekty oczekujące pierwotnych typów danych.

W programowaniu obiektowym (OOP) pojęcie abstrakcji polega na ukrywaniu szczegółów implementacyjnych i prezentowaniu zasadniczych funkcji obiektu użytkownikom. Ta funkcja abstrakcyjna OOP poprawia zrozumiałość i łatwość konserwacji kodu, który piszemy, i zmniejsza duplikację kodu. Ponieważ abstrakcja jest najczęściej używana w językach programowania takich jak Java, zastosujemy tę funkcję w JavaScript.

W poście na blogu Abstract Classes in JavaScript będziemy omawiać Abstract Classes w JavaScript. Zanim zagłębimy się w implementację klasy abstrakcyjnej w JavaScript, musimy zrozumieć, czym są klasy abstrakcyjne.

Co to są klasy abstrakcyjne?

  • Klasy abstrakcyjne można zdefiniować jako klasy, których nie można utworzyć, tj. Których odwołania do obiektu nie można utworzyć i które zawierają jedną lub więcej metod abstrakcyjnych.
  • Metoda abstrakcyjna to metoda, którą można zadeklarować, ale nie ma w niej żadnej implementacji. Klasy abstrakcyjne muszą być dziedziczone i wymagają podklas w celu zapewnienia implementacji metody zadeklarowanej w klasie abstrakcyjnej.
  • Podobnie jak w Javie, mamy słowo kluczowe abstrakcyjne, aby uczynić klasę klasą abstrakcyjną, w JavaScript nie ma takich słów kluczowych rezerwowych, aby zadeklarować klasę jako klasę abstrakcyjną.
  • W poniższym przykładzie zakodujemy kilka wierszy w JavaScript, aby sprawdzić, czy możemy stworzyć klasę abstrakcyjną i sprawdzić, czy możemy spełnić jej właściwości, czy nie.

Przykłady klasy abstrakcyjnej w JavaScript

Zobaczmy niektóre przykłady za pomocą kodu programu

Przykład 1: Abstrakcyjne tworzenie klas

Kod:



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

Wynik -

Objaśnienie powyższego kodu

W powyższym scenariuszu kodu utworzyliśmy jedną funkcję konstruktora Pracownik, która działa jak klasa abstrakcyjna. Stworzyliśmy również funkcję wyświetlania, aby sprawdzić nazwisko pracownika. W ostatnim wierszu kodu JavaScript tworzymy odwołanie do obiektu lub instancję (pracownika) naszej klasy abstrakcyjnej Pracownik, aby sprawdzić, czy obiekt jest tworzony lub czy błąd jest wyświetlany przez funkcję wyświetlania.

Teraz, rozszerzając powyższy przykład, stworzymy kolejną funkcję, która rozszerza właściwości i metody naszego abstrakcyjnego pracownika klasy. Jeśli chodzi o Javę, stworzymy podklasę, a nasz Pracownik będzie nadklasą.

Przykład 2: Rozszerzanie klasy abstrakcyjnej

Kod:



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

Wynik

Objaśnienie powyższego kodu

W powyższym przykładzie kodu osiągnęliśmy abstrakcję, tworząc menedżera funkcji / klasy, który rozszerza naszego pracownika klasy abstrakcyjnej poprzez łańcuch prototypów (ważna koncepcja w JavaScript, dzięki której uzyskuje się dziedziczenie). Szczegóły implementacji są ukryte przed użytkownikiem i mają dostęp tylko do funkcji, które spełniają jego / jej wymagania.

W powyższych przykładach 1 i 2 jesteśmy w stanie osiągnąć abstrakcję, chociaż tak naprawdę nie spełniliśmy wszystkich właściwości klasy abstrakcyjnej. Zgodnie z definicją klas abstrakcyjnych jej obiekt nie może zostać utworzony i powinien mieć jedną lub więcej metod abstrakcyjnych.

Wraz z wydaniem ES6 JavaScript stał się o wiele prostszy i wprowadził w nim nowe funkcje klas, jak w Javie i jego dodatkowe funkcje. Zobaczmy przykład poniżej, w którym implementujemy klasę w JavaScript wraz z właściwościami abstrakcji.

Przykład 3: Klasa abstrakcyjna - pełny kod

Kod:



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

Wyjście 1 - Prawidłowe wyjście

Wyjście 2 - Skomentuj super.display ()

Wyjście 3 - Skomentuj var emp = nowy pracownik ()

Objaśnienie powyższego kodu

Powyższy fragment kodu wygląda prawie jak kod Java z definiowanymi klasami, konstruktorami, metodami i obiektami, to magia wydania ES6. Wracając do kodu, widzimy, że klasa Employee jest klasą abstrakcyjną i wyświetla błąd, gdy jej obiekt jest tworzony (Wyjście 3) i zawiera abstrakcyjną metodę display (), której implementacja jest zdefiniowana w metodzie display () menedżera klasa, która rozszerza właściwości i metody klasy Employee.

Wniosek

Musimy pamiętać, że podczas zajmowania się abstrakcją nie można stworzyć instancji klasy abstrakcyjnej. Podsumowując, dowiedzieliśmy się, w jaki sposób abstrakcja może zostać zaimplementowana w JavaScript i być w stanie zaimplementować klasę abstrakcyjną z zachowaniem wszystkich jej właściwości.

Polecane artykuły

To jest przewodnik po klasach abstrakcyjnych w JavaScript. Tutaj omawiamy wprowadzenie do klas abstrakcyjnych w JavaScript, Czym są klasy abstrakcyjne wraz z odpowiednimi przykładami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Co nowego w Javie 8?
  2. Przesłanianie w OOP
  3. Python Alternatywy
  4. Rodzaje diagramów UML
  5. Słowa kluczowe PHP
  6. Typy danych PL / SQL
  7. Rzut vs Rzuty | 5 najważniejszych różnic, które powinieneś znać
  8. Różne 36 najważniejszych słów kluczowych w SQL z przykładami
  9. Przewodnik po różnych typach danych C #
  10. Różne typy danych SQL z przykładami