Перавызначэнне метадаў бацькі ў ААП у JavaScript

Клас-нашчадак можа перавызначыць метад бацькі, стварыўшы метад з такой самой назвай. Давайце паглядзім на прыкладзе. Хай у нас ёсць наступны бацькоўскі клас:

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

Давайце ў класе-нашчадку створым аднайменны метад:

javascriptclass Student extends User {
  setName(name) {
    
  }
}

Як правіла, перавызначэнне метадаў бацькі трэба для таго, каб змяніць ці дапоўніць паводзіны гэтага метаду. Давайце ў нашым выпадку дадам праверку даўжыні імя:

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

Давайце пераканаемся ў тым, што выклікаецца менавіта перавызначаны метад. Для пачатку створым аб'ект класа нашчадка:

javascriptlet student = new Student;

Цяпер выклічам наш метад, перадаўшы ў яго карэктнае значэнне:

javascriptstudent.setName('john');

А цяпер выклічам метад, перадаўшы ў яго некарэктнае значэнне. У выніку ўбачым у кансолі выкінуўю памылку:

javascriptstudent.setName(''); // памылка
Задание 1

У класе User зрабіце гетэр і сетэр узросту.

Задание 2

У класе Employee перавызначыце сетэр узросту і зрабіце ў ім праверку на тое, што ўзрост ад 18 да 65 гадоў.