JavaScript OOP에서 보호된 메서드
비공개 메서드는 상속되지 않으며 클래스 외부에서 보이지 않습니다. 그러나 때로는 상속되지만 클래스 외부에서는 보이지 않는 메서드가 필요할 때가 있습니다. 이러한 메서드를 보호된 메서드(protected)라고 합니다. 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._capeFirst(this.surn);
}
}
다음 코드에서 헬퍼 메서드를 보호된 메서드로 만드세요:
class User {
setName(name) {
if (this.notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this.notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}