자바는 객체 지향 언어이다. 그래서 클래스(Class)를 생성하고 이로부터 객체를 만들어 이용한다. 이때 클래스는 틀, 객체는 틀로부터 나오는 제품이라고 이해하면 된다. 이와 관련하여 헷갈리는 두 가지 개념이 있다: 추상 클래스(Abstract class)와 인터페이스(Interface). 이를 정리하면 다음과 같다. 추상 클래스는 틀을 만들어 두고, 이 틀을 기반으로 새로운 틀(자식 클래스)을 만드려는 목적 (상속). 인터페이스는 틀을 만들어 두고, 이 틀에 여러 가지 객체를 바꿔끼워가며 사용하는 목적 (다형성). "다형성(polymorphism)이란, 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미"한다 (1). 물론 추상 클래스 (상속)을 다형성 측면에서 이용할 수 있기는 하지만, 인터페이..