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

+ Recent posts