Класи - Просунуто - Inheritance(наслідування) та Override(Перевизначення)
Класи - Просунуто - Inheritance(наслідування) та Override(Перевизначення)
Що таке наслідування – Override(Перевизначення)
Наслідування – це механізм об'єктно-орієнтованого програмування, який дозволяє одному класу (підкласу) успадковувати властивості і методи іншого класу (батьківського класу). За допомогою наслідування можна розширювати або змінювати поведінку об'єкта.
Override (перевизначення) — це процес, коли підклас змінює поведінку методу, успадкованого від батьківського класу, щоб адаптувати його під свої потреби. Тобто, замість того, щоб використовувати метод, який був визначений у батьківському класі, підклас може "перезаписати" його власною реалізацією.
Наслідування та Перезапис - Приклади використання
Давайте візьмемо за приклад Пристрій (Device) та Спеціалізовані типи (Smartphone, Laptop). Уявімо, що ми створюємо систему для різних типів електронних пристроїв. Маємо клас Device (пристрій), який має базові властивості, такі як назва та ціна, і метод turnOn(), який просто включає пристрій. Для специфічних пристроїв, таких як Smartphone та Laptop, ми хочемо змінити (перевизначити) метод turnOn(), щоб додати специфічні деталі для кожного пристрою.
// Батьківський клас - Пристрій
class Device {
constructor(name, price) {
this.name = name; // Назва пристрою
this.price = price; // Ціна пристрою
}
// Метод для включення пристрою
turnOn() {
console.log(`${this.name} увімкнено!`);
}
}// Підклас - Смартфон
class Smartphone extends Device {
constructor(name, price, operatingSystem) {
super(name, price); // Викликаємо конструктор батьківського класу
this.operatingSystem = operatingSystem; // Операційна система смартфона
}
// Перевизначення методу turnOn для смартфона
turnOn() {
console.log(`${this.name} увімкнено з операційною системою ${this.operatingSystem}!`);
}
}// Підклас - Ноутбук
class Laptop extends Device {
constructor(name, price, batteryLife) {
super(name, price); // Викликаємо конструктор батьківського класу
this.batteryLife = batteryLife; // Тривалість роботи від батареї
}
// Перевизначення методу turnOn для ноутбука
turnOn() {
console.log(`${this.name} увімкнено, тривалість роботи від батареї: ${this.batteryLife} годин!`);
}
}// Створення об'єктів
let myPhone = new Smartphone('iPhone 12', 999, 'iOS');
let myLaptop = new Laptop('MacBook Pro', 1999, 10);
// Викликаємо методи
myPhone.turnOn(); // Виведе: iPhone 12 увімкнено з операційною системою iOS!
myLaptop.turnOn(); // Виведе: MacBook Pro увімкнено, тривалість роботи від батареї: 10 годин!extends — Наслідування
Слово extends використовується для того, щоб один клас наслідував властивості та методи іншого класу. Коли клас успадковує інший клас, він стає підкласом (child class) або дочірнім класом, а клас, від якого він успадковує, називається батьківським класом (parent class). Клас, який використовує extends, отримує всі властивості та методи з батьківського класу. Підклас може мати свої власні властивості та методи, а також змінювати або доповнювати методи, які він успадкував.
super() — Виклик конструктора батьківського класу
Слово super використовується для виклику конструктора батьківського класу в підкласі. Якщо підклас має свій власний конструктор, то ми повинні викликати super() перед використанням this в підкласі, інакше отримаємо помилку. super() дозволяє передавати аргументи з конструктора підкласу до конструктора батьківського класу. Це необхідно для того, щоб ініціалізувати властивості, які успадковуються від батьківського класу.
- Отже, якщо коротко:
- extends дозволяє підкласам успадковувати властивості та методи батьківського класу.
- super() використовується для виклику конструктора батьківського класу з параметрами і для ініціалізації властивостей батьківського класу в підкласі.
Таблиця.
Класи - Просунуто - Inheritance(наслідування) та Override(Перевизначення)

build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse