JS властивість Class.extends


Загальний опис

Ключове слово extends в JavaScript є основним елементом для реалізації наслідування в мові. Воно дозволяє новому класу успадковувати властивості та методи від існуючого класу, роблячи ваш код більш модульним, зрозумілим та легшим для підтримки.

Використання ключового слова extends є дуже корисним для побудови ієрархічних структур, де ви хочете уникнути дублювання коду. Це дозволяє вам створювати загальний "батьківський" клас, що містить загальну логіку, а потім додавати специфічні "дочірні" класи, які успадковують цю логіку, додаючи до неї свої особливості.

Ключове слово extends використовується у оголошенні класу. Після слова extends слідує назва класу, від якого потрібно успадкувати властивості. Це може бути корисно у великих програмах, структурованих навколо ООП (Об'єктно-Орієнтоване Програмування), а також у бібліотеках і фреймворках.

Приклад:

// Батьківський клас
class Animal {
  constructor(name) {
    this.name = name;
  }
  makeSound() {
    console.log('Some generic sound');
  }
}

// Дочірній клас
class Dog extends Animal {
  makeSound() {
    console.log('Woof');
  }
}

const myDog = new Dog('Buddy');
myDog.makeSound();  // Виводить 'Woof', а не 'Some generic sound'

У цьому прикладі, клас Dog успадковує властивості та методи від класу Animal, але також перевизначає метод makeSound.

автор: Bond

Нотатка

Дочірній клас може мати методи з тими ж самими назвами, що й у батьківському класі. Це називається перевизначенням методів.

автор: Bond
Нотатка

Ключове слово super може використовуватися для виклику відповідних методів батьківського класу.

автор: Bond
Нотатка

Статичні методи і властивості також успадковуються.

автор: Bond
Нотатка

Якщо ви хочете використовувати один і той же метод, але з різною реалізацією в дочірніх класах, ключове слово extends дозволяє це зробити ефективно через поліморфізм.

автор: Bond

Синтаксис

class ChildClass extends ParentClass { /* … */ }

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
49 45 9 36 13
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
49 49 45 9
Підтримка: серверні переглядачі
Переглядач Node.js Deno
6.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

В цьому прикладі ми створюємо два класи: Vehicle (базовий клас) та Car (дочірній клас). Клас Car успадковує властивості та методи від Vehicle. За допомогою ключового слова super ми викликаємо конструктор Vehicle, щоб успадкувати його властивості.

// Базовий клас "Транспортний засіб"
class Vehicle {
    constructor(brand, model) {
        this.brand = brand; 
        this.model = model;
    }
    
    // Функція для виведення інформації
    showInfo() {
        console.log(`Це ${this.brand} моделі ${this.model}`);
    }
}

// Клас "Автомобіль", який успадковує властивості і методи від "Транспортний засіб"
class Car extends Vehicle {
    constructor(brand, model, maxSpeed) {
        super(brand, model); // Виклик конструктора батьківського класу
        this.maxSpeed = maxSpeed;
    }
    
    showMaxSpeed() {
        console.log(`Максимальна швидкість: ${this.maxSpeed} км/год`);
    }
}

const bmw = new Car("BMW", "X5", 240);
bmw.showInfo(); // Виводить: "Це BMW моделі X5"
bmw.showMaxSpeed(); // Виводить: "Максимальна швидкість: 240 км/год"
автор: Bond

В цьому прикладі ми створюємо клас User, який має основні властивості користувача: ім'я та вік. Ми також маємо метод displayInfo для відображення цих даних. Клас Student успадковує властивості та методи класу User, але також додає додаткову властивість - курс навчання.

Ми також додаємо новий метод displayStudentInfo, який виводить інформацію як про користувача, так і про студента. Таким чином, за допомогою ключового слова extends, ми можемо розширити можливості базового класу, додаючи нові властивості та методи, а також використовуючи вже існуючі.

// Базовий клас "Користувач"
class User {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    
    displayInfo() {
        console.log(`Ім'я: ${this.name}, Вік: ${this.age}`);
    }
}

// Клас "Студент", який успадковує властивості та методи від "Користувач"
class Student extends User {
    constructor(name, age, course) {
        super(name, age); // Виклик конструктора батьківського класу
        this.course = course;
    }
    
    displayStudentInfo() {
        this.displayInfo(); // Використання метода з батьківського класу
        console.log(`Курс: ${this.course}`);
    }
}

const oleksiy = new Student("Олексій", 20, "Математика");
oleksiy.displayStudentInfo(); 
// Виводить: "Ім'я: Олексій, Вік: 20"
// Виводить: "Курс: Математика"
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід