JAVA 웹 개발 패키지 - 패스트캠퍼스/Chapter3
다운 캐스팅과 instanceof
giggs
2022. 1. 4. 11:26
다운 캐스팅(downcasting)
- 업 캐스팅된 클래스를 다시 원래의 타입으로 형 변환
- 하위 클래스로의 형 변환은 명시적으로 해야 함
Customer vc = new VIPCustomer(); //묵시적
VIPCustomer vCustomer = (VIPCustomer)vc; //명시적
명시적으로 할 때 직접적으로 변환 방법 X,
instanceof를 이용하여 체크한 후 변환 O
instanceof를 이용하여 인스턴스의 형 체크
- 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 맞으면 true 아니면 false를 반환함
44번 라인 - 오류 표시는 변수 vc 2번 정의했다는 오류
40번 라인 - 컴파일 오류는 안남, 하지만 작동 시 오류
실습 ----
arraylist로 입력된 값들 불러다가
instanceof로 인스턴스 형 확인 후 변형
출력 값 확인
review
다운 캐스팅 / instanceof 체크 후 형 변환
다운 캐스팅을 왜 하느냐?
상위 클래스의 타입형으로 선언되면 상위 클래스에 있는 속성과 메서드만 사용 가능하다.
타입형이 아닌 인스턴스 형의 메서드가 적용되는 개념이 계속 적용!
직접 형 변환을 해주면 오류 발생 가능성 커짐, instanceof로 체크 후 형 변환!
다운 캐스팅을 할 경우가 안 생기도록 하는게 제일 best라는 생각이 들었다.
어쩔 수 없는 상황이 생기겠지?ㅎㅎ
상위 클래스 타입형으로 핸들링하는 게 편해서 묶은 다음에
따로 다운 캐스팅을 해서 인스턴스의 메서드를 사용하는 것이라고 이해
형 변환 시에도 잘 입력하면 될 거 같은데
굳이 instanceof와 if를 써서 하는 부분에서는
java가 안정성을 중요시하는구나를 느꼈고,
화면에 보이는 컴파일 오류가 없어도 실행 과정에서 오류가 날 수 있구나도 알았다.
체크해서 오류를 방지할 수 있다면 해야지
프로그램 다운될 수 있는 상황이 발생한다면 Oh NOOO