Thirrja e metodës së ripërcaktuar në OOP në JavaScript
Gjatë ripërcaktimit, pasardhësi humb
qasjen në metodën e ripërcaktuar
të prindit. Megjithatë, mund të merret
qasja në të. Kjo bëhet
duke përdorur fjalën kyçe super,
e cila tregon te klasa prind.
Le të shohim një shembull kur mund të na duhet qasje në metodën prind. Le të themi se kemi klasën prind të mëposhtme:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Le të themi se në klasën-pasardhës ne kemi ripërcaktuar metodën e prindit:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('gabim në emrin e studentit');
}
}
}
Mund të vërehet se në metodën e ripërcaktuar gjatë plotësimit të kushtit në thelb ekzekutohet kodi i metodës prind. Rezulton një dublim i panevojshëm kodi.
Mund të shpëtohet prej tij, nëse thirret metoda e prindit. Le ta bëjmë këtë:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // metoda e prindit
} else {
throw new Error('gabim në emrin e studentit');
}
}
}
Jepet kodi i mëposhtëm:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('nevojitet mosha më shumë se 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('nevojitet mosha më shumë se 0');
}
} else {
throw new Error('nevojitet mosha më pak se 120');
}
}
}
Në klasën Employee korrigjoni
thjeshtoni vendosësin e moshës, duke përdorur
metodën origjinale të prindit.