1. abstract와 virtual의 차이
abstract
메소드, 속성, 인덱서 또는 이벤트 선언을 한정하는 데 사용됨
파생된 클래스에서 override를 할 수 있는데 필수적이지는 않음
객체 생성이 가능
virtual
클래스, 메소드, 속성, 인덱서, 이벤트에 사용할 수 있으며 여러 클래스에서 공유할 기본적인 정의를 지정함
자체적으로 구현이 불가능하며 파생 클래스에서 반드시 구현해야 함
인스턴스화가 불가능