JavaScript ООП-де қайта анықталған әдісті шақыру
Қайта анықтау кезінде туынды клас
базалық кластың қайта анықталған әдісіне
қол жеткізе алмайды. Дегенмен, оған
қол жеткізу әлі де мүмкін. Бұл
super кілт сөзі арқылы жасалады,
ол базалық класқа сілтеме жасайды.
Базалық кластың әдісіне қол жеткізу қажет болатын мысалды қарастырайық. Бізде келесі базалық клас бар делік:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Біз туынды класта базалық кластың әдісін қайта анықтадық делік:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Қайта анықталған әдісте шарт орындалған кезде іс жүзінде базалық кластың әдісінің коды орындалатынын байқауға болады. Бұл қажетсіз код көшірмесіне әкеледі.
Бұл базалық кластың әдісін шақыру арқылы жойылуы мүмкін. Мұны жасайық:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // базалық кластың әдісі
} else {
throw new Error('student name error');
}
}
}
Берілген код:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
} else {
throw new Error('need age less 120');
}
}
}
Employee класында
жас сеттерін жеңілдетіңіз, базалық кластың
түпнұсқа әдісін пайдаланып.