타입 변환 타입 변환은 인터페이스와 구현 클래스 간에 발생한다. 자동 타입 변환(promotion) 인터페이스 변수 = 구현객체; 인터페이스 변수에 구현 객체를 대입하면 인터페이스 타입으로 자동 타입 변환된다. 부모 클래스가 인터페이스를 구현하고 있으면 자식 클래스도 인터페이스 타입으로 자동 타입 변환될 수 있다. 강제 타입 변환(Casting) 구현클래스 변수 = (구현클래스) 인터페이스변수; 인터페이스 타입으로 자동 타입 변화된 후, 다시 구현 클래스 타입으로 변환되는 것이다. 구현 객체를 모르거나, 변경될 수 있어 확인 없이 강제 타입을 변환하면 예외(ClassCastException)가 발생하니 객체의 타입을 확인하는 instanceof 연산자를 사용해 확인 후 변환한다.
강제타입변환
클래스 변환은 상속 관계에 있는 클래스에서 발생한다. 자동 타입 변환(Promotion) 상속 관계에서 자식이 부모 타입으로 타입 변환하는 것을 클래스의 자동 타입 변환이라 한다. 부모타입 변수 = 자식타입객체; Child child = new Child(); Parents parents = child; Parents parents = new Cat(); Parents와 Child 변수는 타입만 다르고 동일한 Child 객체를 참조한다. 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이라면 자동 타입 변환이 가능하다. 상속 관계에 있지 않으면 컴파일 에러가 나타난다. 예제 코드 더보기 package ch07.sec07.exam02; public class Parent { // 메소드 선언 publi..
강제 타입 변환 큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없지만 작은 허용 범위 타입으로 쪼개어서 저장하는 것은 가능하다. 강제 타입 변환(casting)이며, 연산자로 괄호()를 사용하는데 괄호 안에 들어가는 타입은 쪼개는 단위이다. 작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입 int ➡️ byte int intVal = 10; byte byteVal = (byte) intVal; 10진수 10은 2진수 1010으로 1byte만 있어도 저장 가능하다. int 타입은 4byte의 크기를 가지므로 10은 끝 1byte 안에 저장된다. byte 타입으로 강제 타입 변환을 하면 앞에 3byte는 삭제되고 끝 1byte 값만 byte타입 변수에 저장된다. 2b..