პრივატული მეთოდები მემკვიდრეობითობისას OOP-ში JavaScript-ში
პრივატული მეთოდები არ გამოიყოფა მემკვიდრეობით. ეს გაკეთებულია სპეციალურად, რათა არ დაირღვეს ინკაფსულაცია. მოდით შევხედოთ მაგალითს. დავუშვათ, ჩვენ გვაქვს შემდეგი მშობელი კლასი პრივატული მეთოდით:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
დავუშვათ, მშობელი კლასისგან მემკვიდრეობით მიიღებს შემდეგმა კლასმა:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
დავუშვათ, შვილობილმა სურს გამოიყენოს მშობლის პრივატული მეთოდი. JavaScript ამის ნებას არ მისცემს და შეცდომას დააგენერირებს:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // იქნება შეცდომა
}
}
სცადეთ კლასში Employee
გამოიყენოთ მშობლის პრივატული მეთოდი.