Super
- 부모 클래스
- super 키워드는 constructor 안에서랑 함수에서만 사용할 수 있다.
class Person {
name;
year;
constructor(name, year) {
this.name = name;
this.year = year;
}
sayHello() {
return `Hello I'm ${this.name}`;
}
}
class Singer extends Person {
sing() {
return `노래합니다.`;
}
constructor(name, year, part) {
// 부모 클래스
// Person() 이거랑 똑같음
super(name, year);
this.part = part;
}
sayHello() {
// undefined입니다. rap 파트입니다.
// return `${super.name}입니다. ${this.part} 파트입니다.`;
// super.name이 아닌 this.name으로 해줘야한다
// constructor가 아닌 곳에서는 super 말고 this로 해줘야한다!!
return `${this.name}입니다. ${this.part} 파트입니다.`; // zico입니다. rap 파트입니다.
}
// 부모 클래스에 있는 sayHello()를 쓰려면?
// super 키워드는 함수에는 사용 가능하다.
superSayHello() {
return `${super.sayHello()}`;
}
}
class Actor extends Person {
acting() {
return `연기합니다.`;
}
}
const ian = new Person("DPR Ian", 1990);
console.log(ian.sayHello()); // Hello I'm DPR Ian
const zico = new Singer("zico", 1993, "rap");
console.log(zico); // Singer { name: 'zico', year: 1993, part: 'rap' }
console.log(zico.sayHello()); // zico입니다. rap 파트입니다.
console.log(zico.superSayHello()); // Hello I'm zico