OOP-də JavaScript-də override edilmiş metodun çağırılması
Override etdikdə, nəsildə valideynin override edilmiş metoduna
çıxış itir. Lakin, buna çıxışı yenə də əldə etmək olar.
Bu, valideyn sinifini göstərən super açar sözü
vasitəsilə edilir.
Gəlin nümunə ilə baxaq, nə vaxt valideyn metoduna çıxışımız ola bilər. Tutaq ki, aşağıdakı valideyn sinifimiz var:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Tutaq ki, biz nəsil sinifdə valideyn metodunu override etdik:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Qeyd etmək olar ki, override edilmiş metoddda şərt yerinə yetirildikdə, əslində valideyn metodunun kodu icra olunur. Bu, lazımsız kod təkrarlanması ilə nəticələnir.
Valideyn metodunu çağıraraq bundan qurtulmaq olar. Gəlin bunu edək:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // valideyn metodu
} else {
throw new Error('student name error');
}
}
}
Aşağıdakı kod verilmişdir:
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 sinfində yaş setterini
valideynin orijinal metodundan istifadə edərək
sadələşdirin.