JavaScript OOP에서 부모 메서드 재정의하기
자식 클래스는 부모의 메서드를 재정의할 수 있습니다. 동일한 이름의 메서드를 생성하면 됩니다. 예제를 통해 살펴보겠습니다. 다음과 같은 부모 클래스가 있다고 가정해 봅시다:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
자식 클래스에서 동일한 이름의 메서드를 만들어 보겠습니다:
class Student extends User {
setName(name) {
}
}
일반적으로 부모 메서드를 재정의하는 것은 해당 메서드의 동작을 변경하거나 보충하기 위함입니다. 이 예제에서는 이름의 길이를 검증하는 로직을 추가해 보겠습니다:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
실제로 재정의된 메서드가 호출되는지 확인해 보겠습니다. 먼저 자식 클래스의 객체를 생성합니다:
let student = new Student;
이제 올바른 값을 전달하여 메서드를 호출해 보겠습니다:
student.setName('john');
이제 올바르지 않은 값을 전달하여 메서드를 호출해 보겠습니다. 결과적으로 콘솔에 오류가 발생하는 것을 볼 수 있습니다:
student.setName(''); // 오류
User 클래스에서
나이에 대한 게터와 세터를 만드세요.
Employee 클래스에서
나이 세터를 재정의하고,
나이가 18세에서 65세 사이인지
검증하는 로직을 추가하세요.