# Модификатор protected в TypeScript

Приватные свойства и методы не наследуются потомками. Иногда, однако, нам нужно, чтобы свойство или метод не были доступны извне, но были унаследованы потомками. В этом случае следует использовать модификатор `protected`.

Давайте попробуем на практике. Объявим в нашем классе `User` метод `cape` как защищенный с помощью модификатора `protected`:

`class User { protected cape(str: string) { return str[0].toUpperCase() + str.slice(1); } }`

Сделаем класс `Student`, наследующий от класса `User`:

`class Student extends User { private name: string; constructor(name: string) { super(); this.name = name; } }`

Добавим метод, выводящий имя:

`class Student extends User { private name: string; constructor(name: string) { super(); this.name = name; } public showName(): string { return this.name; } }`

А теперь используем защищенный метод родителя внутри метода потомка:

`class Student extends User { private name: string; constructor(name: string) { super(); this.name = name; } public showName(): string { return this.cape(this.name); // используем метод родителя } }`

Создадим объект нашего класса:

`let student: Student = new Student('john');`

Воспользуемся методом для вывода студента:

`console.log(student.showName());`

А вот попытка вызвать метод `cape` снаружи класса приведет к ошибке:

`console.log(student.cape('test')); //!! ошибка`

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

`class User { protected name: string; protected surn: string; constructor(name: string, surn: string) { this.name = name; this.surn = surn; } }`

Унаследуйте от этого класса класс `Employee`, который добавит защищенное свойство `salary`, а также геттеры всех свойств, как своих, так и унаследованных.

← →
↑