Klicanje preglasene metode v OOP v JavaScriptu
Pri preglasitvi potomec izgubi
dostop do preglasene metode
starša. Vendar pa je do njega
še vedno mogoče pridobiti dostop. To se naredi
s ključno besedo super,
ki kaže na nadrejeni
razred.
Poglejmo si primer, kdaj bomo morda potrebovali dostop k metodi starša. Recimo, da imamo naslednji razred-starš:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Recimo, da smo v razredu-potomcu preglasili metodo starša:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('napaka imena študenta');
}
}
}
Opazimo lahko, da se v preglaseni metodi ob izpolnjevanju pogoja dejansko izvede koda metode starša. Izkazalo se je, da je nepotrebno podvajanje kode.
Lahko se ga znebimo, če pokličemo metodo starša. Naredimo to:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // metoda starša
} else {
throw new Error('napaka imena študenta');
}
}
}
Podana je naslednja koda:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('potrebna starost večja od 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('potrebna starost večja od 0');
}
} else {
throw new Error('potrebna starost manjša od 120');
}
}
}
V razredu Employee popravite
poenostavite nastavitev starosti z uporabo
izvirne metode starša.