ch7-24,25 참조변수의형변환(2)
"car."을 입력했을 때 사용할 수 있는 메서드가 나온다. 이 때 water는 존재하지 않는다. 최고 조상인 Obejct의 자손들도 나온다.
매개변수 car를 FireEngine 타입으로 형변환 하고나서, "fe."을 입력하면 사용할 수 있는 멤버가 늘어나 water()를 사용할 수 있다.
참조변수 car의 값이 null이어도 형변환은 가능하다. 하지만 car2.drive()를 호출했을 때 오류가 발생한다. NullPointerException은 아무 객체가 없는데 호출할 경우 발생하는 오류이다.
java.lang.ClassCastException은 컴파일 에러가 아니라 실행 에러이다. (FireEngine)으로 형변환 하면 컴파일러는 참조변수 c가 실제로 Car의 객체인지 알 수 없다.
실제 객체는 water가 없는 car 인스턴스인데 호출하면 오류가 발생한다. 컴파일이 형변환은 해주지만 멤버를 사용할 때 오류가 발생한다. 따라서 실제 객체가 있는지 없는지가 더 중요하다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-27,28 매개변수다형성 (0) | 2023.04.20 |
---|---|
ch7-26 instanceof 연산자 (0) | 2023.04.19 |
ch7-24,25 참조변수의형변환(1) (0) | 2023.04.19 |
ch7-23 다형성 (0) | 2023.04.19 |
ch7-22 캡슐화 (0) | 2023.04.18 |