/ JAVAJUNGSUK

Ch7-24~25. 참조변수 형변환

자바의 정석 기초편

0. 목차



Chapter7. 객체지향 프로그래밍Ⅱ

Ch7 - 24. 참조변수의 형변환

Ch7 - 25. 참조변수의 형변환 예제



Ch7 - 24. 참조변수의 형변환


▶ 참조변수의 형변환이란?

▷ 결론 : 사용할 수 있는 멤버의 개수를 조절하는 것
  • 기본형의 형변환 : 값이 달라짐
    (int)3.6 = 3
  • 참조변수의 형변환 : 멤버의 개수가 달라짐, 값은 달라지지 않음
▷ 조상 자손 관계일 때만 서로 형변환 가능






Ch7 - 25. 참조변수의 형변환 예제


▶ 에러가 발생하는 이유는? - 1


public static void main(String[] args) {
    Car car = null;
    FireEngine fe = new FireEngine();
    FireEngine fe2 = null;

    fe.water();
    car = (Car)fe;
    
    car.water(); // 컴파일 에러
    
    fe2 = (FireEngine)car;
    fe2.water();
}
▷ Car타입의 참조변수는 water()를 호출 할 수 없음
▷ Car타입의 리모콘은 water()기능을 사용할 수 없음


▶ 에러가 발생하는 이유는? - 2

public static void main(String[] args) {
    Car c = new Car();
    FireEngine fe = (FireEngine)c; // 형변환 실행 에러

    fe.water(); // 컴파일은 통과
}

// console
Exception in thread "main" java.lang.ClassCastException: class baek.Car cannot be cast to class baek.
FireEngine (baek.Car and baek.FireEngine are in unnamed module of loader 'app')
	at baek.CarTest.main(Car.java:39)
▷ 실제 생성된 Car인스턴스에 애초에 water()가 없음