Yksityiset menetelmät perinnässä OOP:ssa JavaScriptissä
Yksityisiä menetelmiä ei periydy. Tämä on tehty tarkoituksella, jotta kapselointia ei rikota. Katsotaanpa esimerkkiä. Olkoon meillä seuraava vanhemman luokka, jossa on yksityinen menetelmä:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Olkoon vanhemmasta luokasta perii seuraava luokka:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
Olkoon jälkeläinen haluaa käyttää vanhemman yksityistä menetelmää. JavaScript ei salli tätä ja antaa virheen:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // tulee virhe
}
}
Kokeile luokassa Employee
käyttää vanhemman yksityistä menetelmää.