# Вызов переопределенного метода в ООП в JavaScript

При переопределении потомок теряет доступ к переопределенному методу родителя. Однако, получить к нему доступ все равно можно. Это делается с помощью ключевого слова `super`, которое указывает на родительский класс.

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

`class User { setName(name) { this.name = name; } getName() { return this.name; } }`

Пусть мы в классе-потомке переопределили метод родителя:

`class Student extends User { setName(name) { if (name.length > 0) { this.name = name; } else { throw new Error('student name error'); } } }`

Можно заметить, что в переопределенном методе при выполнения условия фактически выполняется код родительского метода. Получается не нужное дублирование кода.

Можно от него избавиться, если вызвать метод родителя. Давайте сделаем это:

`class Student extends User { setName(name) { if (name.length > 0) { super.setName(name); // метод родителя } else { throw new Error('student name error'); } } }`

Дан следующий код:

`class User { setAge(age) { if (age >= 0) { this.age = age; } else { throw new Error('need age more 0'); } } } class Employee { setAge(age) { if (age <= 120) { if (age >= 0) { this.age = age; } else { throw new Error('need age more 0'); } } else { throw new Error('need age less 120'); } } }`

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

← →
↑