virtual function을 이용한 확장성 문제 해결
page 349