[Java] 클래스 형 변환

Hyo Kyun Lee·2022년 1월 31일
0

Java

목록 보기
23/49

1. 클래스 형 변환

부모(넓은) 클래스가 자식(작은) 클래스를 가리키고 있는 상황에서, 부모클래스 형태의 인스턴스가 자식 인스턴스까지 참조하고자 할 때 이루어지는 과정을 형 변환이라 한다.

2. 부모 클래스는 자식 클래스를 가르킬 수 있다

아래 부모 클래스와 자식 클래스와 함께 각각 run과 alert 메소드가 있다고 가정해보자.

public class Car{
	public void run(){
    }
}
public class Truck extends Car{
	public void alter(){
    }
}

이때 위 메소드를 사용하기에 앞서, 부모가 자식을 가르키는 형태로, 즉 부모 타입으로 참조변수를 만들어 자식 인스턴스를 참조하도록 만들 수 있다.

public class busTest{
	public void main(String[] args){
    	Car c = new Bus(); //형태는 부모 클래스, 참조 인스턴스는 자식 클래스
    }
}

이때 만들어진 참조변수 c는 일단은 부모클래스의 메소드만 사용할 수 있다.

c.run(); //가능
c.alert(); //불가능

이 경우에 바로 클래스 형 변환을 사용하여 자식 클래스의 메소드까지 사용할 수 있다.

3. 형변환

형 변환은 기본적으로 큰 그릇을 담고 있는 변수를 다시 작은 그릇을 가르키도록 옮겨주는 작업이다.

위에서 일단 클래스 형변환이 한 번 발생하였다.

Car c = new Bus();

형태는 부모 클래스이지만, 자식 인스턴스를 참조하기 때문이다.

이때 자식 클래스의 메소드까지 사용하기 위한 실질적인 형변환은 자료형 형변환하듯이 소괄호()를 활용해주면 된다.

  • 기본 자료형 형변환
    long value1 = value;
    int result = (int)value1;

  • 클래스 형변환
    Car c = new Bus();
    Bus bus = (Bus) c;

부모 클래스 형태를 가지면서 자식 인스턴스를 가르키는 변수(=실질적으로 사용하는 인스턴스)를 다시 자식 클래스로 향하도록 변환해주는데, 이때 새로 생성하는 참조변수는 형태가 자식클래스 형태이다.

위와 같은 형 변환이 일어난다면, 해당 참조변수는 자식 클래스의 메소드까지 사용가능하며, 물론 부모 클래스의 메소드까지도 사용가능하다.

bus.run();
bus.alert();

0개의 댓글