JavaScriptのOOPにおける継承時のプライベートメソッド
プライベートメソッドは継承されません。 これは、カプセル化を破らないように意図的に設計されています。 例を見てみましょう。 以下のようなプライベートメソッドを持つ親クラスがあるとします:
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 で親のプライベートメソッドを
使用してみてください。