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 클래스에서 부모의 비공개 메서드를
사용해 보세요.