타입 변환 타입 변환은 인터페이스와 구현 클래스 간에 발생한다. 자동 타입 변환(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..
산술 연산식에서 피연산자로 사용되는 경우 정수 타입 자바에서는 피연산자를 4byte 단위로 저장하기 때문에 정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int보다 작은 byte, char, short 타입 변수는 int 타입으로 자동 변환이 되어 연산을 수행한다. byte x = 10; byte y = 20; byte result = x + y; //error byte x = 10; byte y = 20; int result = x + y; // 30 byte 변수 x, y가 피연산자로 사용되면 변수값은 int 타입으로 연산되고 결과도 int 타입으로 생성된다. 결과값을 byte 변수에 저장할 수 없고, int 변수에 저장해야 한다. 정수 연산식에서 모든 변수가 int 타입으로 변환되는 것은 아..
자동 타입 변환 자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다. 기본 타입을 허용 범위 순으로 나열 byte < short, char < int < long < float < double byte byteValue = 10; int intValue = byteValue; byte 타입은 1byte, int 타입은 4byte 메모리의 크기로 int 타입의 허용 범위가 더 크기 때문에 자동 타입 변환이 된다. long longValue = 5000000000L; float floatValue = longValue; // 5.0E9F double doubleValue = longValue; // 5.0E9 정수 타입이 실수 타입으로 대입될 경우에는 실수 타입은 정..