[자바/JAVA] 참조 변수 형변환 : 상속 관계 일때
- Java
- 2021. 5. 11.
자바에서 서로 다른 데이터 타입 간 표현이나 연산을 위해 데이터의 타입을 바꿔야 하는 경우가 있다. 데이터의 타입을 바꾸는 걸 형변환이라고 한다.
기본형 형변환 : int <-> String
기본형 타입 간 형변환 중 int와 String 간의 형변환이 자주 사용된다.
int -> String
자바에서는 서로 다른 데이터 타입 데이터가 연산되면 크기가 더 작은 데이터 타입이 큰쪽의 데이터 타입으로 자동 변환된다. String(12 byte)은 int(4 byte) 보다 크다. 이런 특성을 감안해 연산자를 사용하면 간단하게 형변환 가능하다.
Ex)
String s = 100 + ""; // 100은 "100"으로 변환
String -> int
이 경우 자바가 기본적으로 제공하는 Integer 클래스의 parseInt
메서드를 활용하면 된다. 다만 숫자만 포함된 String형이어야 변환 가능하다.
Ex)
int i = Integer.parseInt("100"); // "100"이 100으로 변환.
참조 변수 간 형변환
참조 변수 간의 형변환은 상속 관계에 있는 타입에 한해서 가능하다. 즉, 자손 타입 <-> 조상 타입 간 형변환이 가능한데, 두 경우 역시 표현 문법이 다르다.
- 자손 타입 -> 조상 타입 (형변환 생략됨)
- 조상 타입 -> 자손 타입 (형변환 생략 못함)
Ex)
class Car { // 조상 클래스 Car
String color;
int door;
void drive(){}
void stop() {}
}
class FireEngine extends Car { // 자손 클래스 FireEngine
void water(){}
}
public static void main(String[] args) {
Car car = null; // Car 타입의 참조변수 car에 null 값 선언
FireEngine fe = new FireEngine(); // FireEngine 타입의 참조변수 fe로 FireEngine 객체 생성
FireEngine fe2 = null; // FireEngine 타입의 참조변수 fe2로에 null 값 선언
car = fe;
/*조상 <- 자손 형변환. "(데이터 타입)값" 같은 형식의 형변환 생략함.
조상타입의 참조변수로 자손의 인스턴스를 참조.
기본형 변수의 형변환에서 작은 자료형에서 큰 자료형의 형변환은 생략이 가능하듯이,
참조형 변수의 형변환에서는 자손타입의 참조변수를 조상타입으로 형변환하는 경우에는 형변환을 생략.*/
car.drive(); // okay.
car.water(); // error. FireEngine 클래스에만 있는 water() 메서드는 사용 못함.
fe2 = (FireEngine)car;
/* 자손 <- 조상 형변환.
자손타입의 참조변수로 조상의 인스턴스를 참조 (FireEngine)로 형변환.*/
fe2.drive(); // okay.
fe2.water(); // okay.
}
반응형
'Java' 카테고리의 다른 글
[자바/JAVA] Object 클래스 toString() 메서드 활용법 (0) | 2021.05.14 |
---|---|
[자바/JAVA] 많이 활용되는 equals(Object obj) 메서드, 구현부 의미는 (0) | 2021.05.13 |
[자바/JAVA] 다형성이 효율적인 이유 (0) | 2021.05.11 |
[자바/JAVA] 정보은닉 | Private | getter, setter 메서드 생성 (0) | 2021.05.07 |
[자바/JAVA] 현재 시간 출력하기 (0) | 2021.05.07 |