Конструктор при наслеђивању у ООП-у у JavaScript-у

При наслеђивању можемо преопределити конструктор родитеља. Погледајмо на примеру. Претпоставимо да имамо следећу класу родитеља:

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

Претпоставимо да од родитељске класе наслеђује следећа класа:

javascriptclass Student extends User {
  
}

Претпоставимо да желимо у класи-потомку проширити конструктор, додавши у њега додатне параметре:

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

У том случају морамо нужно у првом реду позвати конструктор родитеља преко super:

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

Команда super у суштини јесте конструктор родитеља. Зато проследимо у њега тражене параметре:

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

Сада у потомку годину студија упишимо у своје својство потомка:

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

Направимо гетер за годину студија:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    super(name, surn);
    this.year = year;
  }
  
  getYear() {
    return this.year;
  }
}
Задание 1

Претпоставимо да класа Employee наслеђује од класе User из овог часа.

Задание 2

Преопределите у класи Employee конструктор родитеља, додавши у њега параметар са годинама и платом.

Задание 3

Направите гетере за године и плату.