up-casting : supertype으로의 casting. 즉, child class type의 객체를 parent class type의 객체로 다룰 수 있게 하는 것.down-casting : subtype으로의 casting. 즉, upcasting 된 객체를
가장 간단히 말하면, abstract class는 abstract keyword를 사용해 선언된 class를 말한다. 이 class는 abstract 메소드를 가질 수도, 가지지 않을 수도 있다. JVM은 abstract class를 동작이 완전히 정의되지 않은 불완전
Collection interface와 Map interface가 따로 있는 이유는, 두 interface가 다음 이유들 때문에 서로 호환 가능하지 않기 때문이다. Collection은 add(Object o) 메소드를 가지지만, Map은 key-value 쌍을 갖기