첫 번째 경우, 작은 그릇에서 더 큰 그릇으로 옮기는 것이므로 컴파일러는 오류를 발생시키지 않고, 형을 바꿔줍니다. 그러나 두 번째 경우, 큰 그릇에서 작은 그릇으로 옮기는 것이므로 큰 그릇에 들어있는 값에 따라서 실행 시점에 오류가 발생할 수 있습니다. 따라서 컴파일러는 컴파일 시 오류를 발생시키고, 프로그래머에게 명시적으로 형변환할 것을 요구합니다.
예제를 보면서 더 자세히 설명하겠습니다. 먼저 Car 클래스가 나와있는 다음 코드를 봐주세요.
package javaStudy; public class Car{ public void run() { System.out.println("Car의 run 메서드"); } }
Car 클래스는 run 메서드를 가지고 있네요.
자, 다음 코드는 Car를 상속받는 Van 클래스입니다.
package javaStudy; public class Van extends Car { public void ppangppang() { System.out.println("빵빵"); } }
Van 클래스는 Car 클래스에는 없는 ppangppang 메서드를 가지고 있습니다.