# Конструктор при наследовании в ООП в JavaScript

При наследовании можно переопределять конструктор родителя. Давайте посмотрим на примере. Пусть у нас есть следующий класс родителя:

`class User { constructor(name, surn) { this.name = name; this.surn = surn; } getName() { return this.name; } getSurn() { return this.surn; } }`

Пусть от родительского класса наследует следующий класс:

`class Student extends User { }`

Пусть мы хотим в классе-потомке расширить конструктор, добавив в него дополнительные параметры:

`class Student extends User { constructor(name, surn, year) { } }`

В этом случае нам обязательно нужно первой строкой вызвать конструктор родителя через `super`:

`class Student extends User { constructor(name, surn, year) { super(); } }`

Команда `super` по сути является конструктором родителя. Поэтому передадим в него требуемые параметры:

`class Student extends User { constructor(name, surn, year) { super(name, surn); } }`

Теперь в потомке год обучения запишем в свое свойство потомка:

`class Student extends User { constructor(name, surn, year) { super(name, surn); this.year = year; } }`

Сделаем геттер для года обучения:

`class Student extends User { constructor(name, surn, year) { super(name, surn); this.year = year; } getYear() { return this.year; } }`

Пусть класс `Employee` наследует от класса `User` из данного урока.

Переопределите в класс `Employee` конструктор родителя, добавив в него параметр с возрастом и зарплатой.

Сделайте геттеры для возраста и зарплаты.

←→
↑