부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다.
class Animal{
constructor(){
this.sound();
}
sound(){}
}
class Dog extends Animal{
sound(){console.log('월월')}
}
class Cat extends Animal{
sound(){console.log('야옹')}
}
new Animal();
new Dog();
new Cat();
constructor를 통해
this.sound()
를 진행하나 아무것도 없으므로 아무결과도 안 나타난다.
constructor를 통해
this.sound()
가 실행되나 이때 this는 Dog라는 클래스이므로 Dog안에 있는 sound()가 실행되어멍멍
이 출력된다.
constructor를 통해
this.sound()
가 실행되나 이때 this는 Cat라는 클래스이므로 Cat안에 있는 sound()가 실행되어야옹
이 출력된다.