Κλήση υπερκαλυμμένης μεθόδου στην ΑΑΠ στο JavaScript
Κατά την υπερκάλυψη, ο απόγονος χάνει
την πρόσβαση στην υπερκαλυμμένη μέθοδο
του γονέα. Ωστόσο, είναι ακόμα δυνατόν
να αποκτήσει πρόσβαση σε αυτήν. Αυτό γίνεται
χρησιμοποιώντας τη λέξη-κλειδί super,
που δείχνει towards την γονική
κλάση.
Ας δούμε ένα παράδειγμα όπου μπορεί να χρειαστεί πρόσβαση στη γονική μέθοδο. Ας υποθέσουμε ότι έχουμε την ακόλουθη γονική κλάση:
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 διορθώστε
απλοποιήστε τον setter ηλικίας, χρησιμοποιώντας
την αρχική μέθοδο του γονέα.