გადატვირთული მეთოდის გამოძახება OOP-ში JavaScript-ში
გადაწერისას მემკვიდრე კარგავს
წვდომას მშობლის გადაწერილ მეთოდთან.
თუმცა, მასთან წვდომა მაინც შესაძლებელია.
ეს კეთდება საკვანძო სიტყვის super
დახმარებით,
რომელიც მიუთითებს მშობელ
კლასზე.
მოდით შევხედოთ მაგალითს, როდესაც შეიძლება დაგვჭირდეს წვდომა მშობლის მეთოდთან. დავუშვათ, გვაქვს შემდეგი მშობელი კლასი:
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 კლასში შეასწორეთ
ასაკის საბმულის კოდი, გამოიყენეთ
მშობლის ორიგინალური მეთოდი.