Наследование | Inheritance

Наследование работает через ключевое слово extends.

class Task {}
class SubTask extends Task {}

Если подкласс не имеет своего конструктора - то он использует конструктор родителя.

class Task {
	constructor(){
		console.log('Task - constructor');
	}
}
class SubTask extends Task {}

let task = new Task();
let subtask = new SubTask();

// Task - constructor
// Task - constructor

Если у подкласса есть конструктор то он должен вызвать конструктор родительского класса. Для этого используется ключевое слово super(). Аналогочно и наоборот - если указывается констроктор для подкласса - то нужно указывать и конструктор для родителя.

class Task {
	constructor(){
		console.log('Task - constructor');
	}
}
class SubTask extends Task {
	constructor(){
		super();
		console.log('SubTask - constructor');
	}
}

let task = new Task();
let subtask = new SubTask();

// Task - constructor
// Task - constructor
// SubTask - constructor

В унаследованном классе можно вызвать метод родительского класса а потом дополнить его. Для этого используется ключевое слово super. и имя родительского метода.

В классе потомке также наследуются гетеры/сеттеры и статические методы и свойства.