미리 알아야 하는 개념들
polymorphism
하나의 부모 타입 참조 변수가 여러 자식 타입의 인스턴스를 가질 수 있는 것
⇒ 하나의 코드가 여러 자료형으로 구현되어 실행되는것
class Bird {
constructor(bird) {
Object.assign(this, bird);
}
get plumage() {
switch (this.type) {
case '독수리':
return '멋있다';
case '비둘기':
return '못생겼다';
default:
throw new Error();
}
}
}
하지만 위의 코드는 나중에 확장을 하기 힘듦
매번 case를 추가해야하고, 코드가 한가지 일을 해야하는데 ‘멋있다’, ‘못생겼다’등의 타입을 다르게 반환해서 책임이 분산되어 있음