class Person {
constructor(first, last, age, gender, interests) {
this.name = {
first,
last
};
this.age = age;
this.gender = gender;
this.interests = interests;
}
greeting() {
console.log(`Hi! I'm ${this.name.first}`);
};
farewell() {
console.log(`${this.name.first} has left the building. Bye for now!`);
};
}
사람을 나타내는 클래스를 만들었다. 여기에 Person을 상속받는 Teacher 클래스를 만들려면 어떻게 해야할까. 먼저 extends
키워드를 통해 상속받을 클래스를 명시해 준다.
class Teacher extends Person {
constructor(first, last, age, gender, interests, subject, grade) {
this.name = {
first,
last
};
this.age = age;
this.gender = gender;
this.interests = interests;
// 과목과 등급은 교사에 따라 다릅니다.
this.subject = subject;
this.grade = grade;
}
}
super()
연산자를 정의하면 코드가 조금 더 간결해진다. super()
는 상위 클래스의 생성자를 호출하며 super()의 매개변수를 통해 상위 클래스의 멤버를 상속받을 수 있는 코드이다.class Teacher extends Person {
constructor(first, last, age, gender, interests, subject, grade) {
super(first, last, age, gender, interests);
// 과목과 등급은 교사에 따라 다릅니다.
this.subject = subject;
this.grade = grade;
}
}
Teacher의 인스턴스를 생성하면 Teacher와 Person양 쪽의 메소드와 속성을 사용할 수있다.
let snape = new Teacher('Severus', 'Snape', 58, 'male', ['Potions'], 'Dark arts', 5);
snape.greeting(); // Hi! I'm Severus.
snape.farewell(); // Severus has left the building. Bye for now.
snape.age // 58
snape.subject; // Dark arts