08-06 다운 캐스팅과 instanceof
앞서 상속 관계를 가지는 구조에서 다형성을 활용하면 프로그램의 확장성이 높아진다는 것을 배웠다.
Animal ani = new Human()
상위 클래스로 묵시적으로 형 변환이 일어나는 것인데, 이 경우엔 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다. 즉, Human 클래스에 더 많은 메서드와 멤버변수가 구현되어 있어도 사용할 수가 없는 것이다.
=> 다운캐스팅 ? 상위 클래스에서 형 변환되었던 하위클래스를 다시 원래 인스턴스의자료형으로 형변환하는 것
(=downcating)
instanceof 예약어 ?
다운캐스팅 하기 전에 원래 인스턴스의 자료형을 확인해야 실행 오류를 막을 수 있다.
Animal hAnimal = new Human()
if(hAnimal instanceof Human) {
Human jm = (Human)hAnimal;
}
hAnimal의 원래 인스턴스형이 Human 클래스 자료형인가를 확인해줌.
instanceof의 반환값이 true면 다운 캐스팅을 함. 하위 클래스로 형변환을 할 때는 명시적으로 자료형을 작성해줘야 함.
"Do IT! 자바 프로그래밍 입문" 책을 읽고 요약하는 글입니다.
p.273~279
'CS 공부 > JAVA' 카테고리의 다른 글
[JAVA] 상속과 다형성 (2) (0) | 2023.07.14 |
---|---|
[JAVA] 상속과 다형성 (1) (0) | 2023.06.26 |
이클립스 실행 오류... (0) | 2022.01.13 |
객체지향..ER다이어그램... (0) | 2021.02.21 |
5장 클래스 분리 (0) | 2021.02.19 |