Felülírt metódus hívása az OOP-ben JavaScriptben
A felülírás során a leszármazott elveszíti
a hozzáférést a felülírt szülői metódushoz.
Azonban továbbra is elérhetővé tehető.
Ez a super kulcsszóval történik,
amely a szülőosztályra mutat.
Nézzünk egy példát, amikor szükségünk lehet hozzáférni a szülői metódushoz. Tegyük fel, hogy a következő szülőosztályunk van:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Tegyük fel, hogy a leszármazott osztályban felülírtuk a szülő metódusát:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Megfigyelhető, hogy a felülírt metódusban a feltétel teljesülésekor lényegében a szülői metódus kódja fut le. Ez szükségtelen kódismétléshez vezet.
Megszabadulhatunk tőle, ha meghívjuk a szülő metódusát. Tegyük ezt meg:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // szülői metódus
} else {
throw new Error('student name error');
}
}
}
Adott a következő kód:
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');
}
}
}
A Employee osztályban egyszerűsítsd
a kor beállítót az eredeti szülői metódus
használatával.