Перавызначэнне метадаў бацькі ў ААП у JavaScript
Клас-нашчадак можа перавызначыць метад бацькі, стварыўшы метад з такой самой назвай. Давайце паглядзім на прыкладзе. Хай у нас ёсць наступны бацькоўскі клас:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Давайце ў класе-нашчадку створым аднайменны метад:
class Student extends User {
setName(name) {
}
}
Як правіла, перавызначэнне метадаў бацькі трэба для таго, каб змяніць ці дапоўніць паводзіны гэтага метаду. Давайце ў нашым выпадку дадам праверку даўжыні імя:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Давайце пераканаемся ў тым, што выклікаецца менавіта перавызначаны метад. Для пачатку створым аб'ект класа нашчадка:
let student = new Student;
Цяпер выклічам наш метад, перадаўшы ў яго карэктнае значэнне:
student.setName('john');
А цяпер выклічам метад, перадаўшы ў яго некарэктнае значэнне. У выніку ўбачым у кансолі выкінуўю памылку:
student.setName(''); // памылка
У класе User
зрабіце
гетэр і сетэр узросту.
У класе Employee
перавызначыце
сетэр узросту і зрабіце ў ім
праверку на тое, што ўзрост ад
18
да 65
гадоў.