Przesłanianie metod rodzica w OOP w JavaScript
Klasa potomna może przesłonić metodę rodzica, tworząc metodę o tej samej nazwie. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę nadrzędną:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Stwórzmy metodę o tej samej nazwie w klasie potomnej:
class Student extends User {
setName(name) {
}
}
Zazwyczaj przesłanianie metod rodzica jest potrzebne po to, aby zmienić lub uzupełnić zachowanie tej metody. W naszym przypadku dodajmy sprawdzenie długości imienia:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Upewnijmy się, że wywoływana jest właśnie przesłonięta metoda. Na początek stwórzmy obiekt klasy potomnej:
let student = new Student;
Teraz wywołajmy naszą metodę, przekazując do niej poprawne wartości:
student.setName('john');
A teraz wywołajmy metodę, przekazując do niej niepoprawną wartość. W rezultacie zobaczymy w konsoli wyrzucony błąd:
student.setName(''); // błąd
W klasie User zrób
getter i setter wieku.
W klasie Employee przesłoń
setter wieku i zrób w nim
sprawdzenie, czy wiek jest od
18 do 65 lat.