가상 메서드
*에는 구현이 있으며 자식 클래스에 이를 재정의하는 옵션을 제공한다. (반드시 재정의할 필요는 없음.)
이에 비해, 추상 메서드
는 구현을 제공하지 않으며 파생 클래스가 메서드를 재정의하도록 강제한다.
따라서 추상 메서드
에는 실제 코드가 없으며 추상이 아닌 자식 클래스는 부모의 추상 메서드를 재정의해야 한다.
가상 메서드
에는 일반적으로 어떤 항목의 기본 구현인 코드가 있을 수 있으며, 모든 자식 클래스는 override
수정자를 사용하여 메서드를 재정의하고 사용자 지정 구현을 제공할 수 있다.