Ответ
Наследование — это механизм объектно-ориентированного программирования, позволяющий создавать новый класс (дочерний) на основе существующего (родительского). Дочерний класс наследует свойства и методы родителя, что способствует повторному использованию кода и построению иерархии.
Пример в JavaScript/Node.js:
// Родительский класс
class Logger {
constructor(name) {
this.name = name;
}
log(message) {
console.log(`[${this.name}] ${message}`);
}
}
// Дочерний класс, расширяющий функциональность
class FileLogger extends Logger {
constructor(name, filePath) {
super(name); // Вызов конструктора родителя
this.filePath = filePath;
}
// Переопределение метода
log(message) {
const logEntry = `[${this.name}] ${new Date().toISOString()}: ${message}n`;
// Здесь могла бы быть логика записи в файл (например, с помощью fs.appendFile)
console.log(`(Записано в ${this.filePath}): ${logEntry.trim()}`);
}
// Новый метод, специфичный для дочернего класса
clearLog() {
console.log(`Лог-файл ${this.filePath} очищен.`);
}
}
const appLogger = new FileLogger('APP', './logs/app.log');
appLogger.log('Сервер запущен'); // Использует переопределенный метод
// Вывод: (Записано в ./logs/app.log): [APP] 2024-...: Сервер запущен
const baseLogger = new Logger('BASE');
baseLogger.log('Тестовое сообщение'); // Использует метод родителя
// Вывод: [BASE] Тестовое сообщение
Ключевые аспекты в контексте Node.js:
- Используется ключевое слово
extendsдля создания иерархии классов. super()вызывается для доступа к конструктору и методам родительского класса.- Позволяет создавать специализированные версии общих компонентов (например, разные типы логгеров, обработчиков запросов или подключений к БД).
- Способствует соблюдению принципа DRY (Don't Repeat Yourself).