참조변수의 형변환

  • 사용할 수 있는 멤버의 갯수를 조절하기 위해 사용

  • 주소값, 객체는 바뀌지 않는다

  • 조상, 자손 관계의 참조변수는 서로 형변환 가능 (조상-자손 관계일 때만 가능하다!)

    • 형변환을 하면, 멤버의 갯수를 늘렸다 줄였다 할 수 있다.
  • 참조변수가 가리키는 실제 객체(인스턴스)가 중요하다.

    • 다형성에서, Tv t = new SmartTv(); 는 가능한데, 반대로는 불가능 했던 것과 비슷한 원리이다.
    • 참조변수 형변환에서 중요한 것은, "인스턴스의 멤버 갯수"이다.
    • 인스턴스의 멤버 갯수 기준으로, 참조 변수의 사용 멤버 수가 적은 방향으로만 형변환이 가능하다
    • 인스턴스의 멤버 갯수 기준보다, 참조 변수의 사용 멤버 수가 더 많은 방향으로는 변환할 수 없다!
  • instance of 연산자
    참조변수의 형변환 가능 여부 확인에 사용. 가능하면 ture 반환.
    형변환 전에 반드시 instanceof로 확인해야 함!
    자기 자신과 조상클래스(전부)에 대해 반드시 true가 나옴 -> 형변환 가능
    false가 나오는 경우 -> 형변환 불가능

void doWork(Car c) { // 참조변수 타입이 Car임 -> new Car(); new FireEngine(); new Ambulance(); 
					// 다형성으로 인해, 자기 자신 포함, 자손 클래스들 전부 사용 가능
	if (c instanceof FireEngine) {	// 1. 형변환 가능 여부 확인
    	FireEngine fe = (FireEngine) c;	// 2. 형변환
        fe.water();
}

// 아래 코드는 서로 동일하다
// 1.
doWork(new FireEngine());

// 2.
Car c = new FireEngine();
doWork(c);

좋은 웹페이지 즐겨찾기