[개인공부] 7-24 참조변수의 형변환

Walter Mitty·2022년 11월 23일
0

개인공부

목록 보기
15/40
post-thumbnail

참조변수의 형변환

  • 사용할 수 있는 멤버의 갯수를 조절하는 것
    • 기본형은 값이 바뀐다
      float f = 3.5f;
       int i = (int)f;
       System.out.println(i);
      결과는 3이 출력된다. 즉, 3.5에서 3으로 값이 바뀐다
    • 참조형
      - 주소값 안바뀜
      - 객체 안바뀜
      - 갯수가 바뀜

  • 조상 자손 관계의 참조변수는 서로 형변환 가능.
class Car {}
class FireEngine extends Car {}
class Ambulance extends Car {}


  • 사용 가능
    • c.color
    • c.door
    • c.drive()
    • c.stop()
  • 사용 불가능
    • c.water() - car에 없는 변수!

instanceof 연산자

  • 참조변수의 형변환 가능여부 확인에 사용된다 가능하면 true를 반환한다.
    • 참조변수 형변환은 조상과 자손사이에서만 됨
    • 형변환 전에 반드시 instance of로 가능여부 확인하고 형변환 해야함!!
    void dowort(Car c) {
    	if(c instanceof FireEngine) {		//1. 형변환 가능한지 확인
      		FireEngine fe = (FireEngine)c;	//2. 영변환
        	fe.water();
        	...
    	}
      	else if(c instance of Ambulance) {
          	...
        }
    }
  • 형변환을 하는 이유!!:
    인스턴스의 원래 기능을 모두 사용하기 위해서. Car타입의 리모콘인 c로는 water()를 호출할 수 없으니 리모콘을 FireEngine타입으로 바꿔서 water()를 호출한다.

질의응답

Q. 참조 변수 형 변환 왜 하나요?
A. 참조변수(리모콘)을 변경함으로써 사용 할 수 있는 멤버의 갯수를 조절하기 위해서

Q. instanceof 연산자는 언제 사용하나요?
A. 참조변수를 형변환하기 전에 형변환 가능여부를 확인 할 때

0개의 댓글