//////
Search
🗒️

다형성

날짜
2022/09/27
작성자
전수진
서태건
카테고리
회고

업캐스팅 & 다운캐스팅 (타입변환)

서로 상속관계에 있는 클래스 사이에서만 타입변환(업&다운 캐스팅) 가능
캐스팅을 사용하는 이유는 다형성(Polymorphism)과 관련이 있다.

업캐스팅

자식클래스에서 부모클래스로 타입변환(업캐스팅)은 생략가능하다.
super 클래스형 참조변수로 sub 클래스 객체를 가리키는데 사용 가능하다.
자동 형 변환이 일어남
Person p = new UnivStudent(); //정상 Person p = (Person) (new UnivStudent());
JavaScript
복사
sub 클래스 객체의 성질은 그대로 유지됨

다운캐스팅

부모클래스에서 자식클래스로 타입변환 (다운캐스팅) 반드시 명시해야 한다
sub 클래스형 참조변수는 super 클래스 객체를 가리킬 수 없음(기본적 다운 캐스팅 불가)
UnivStudent s = new Person); //오류, 명시적 형변환으로 컴파일 오류는 피할 수 있더라도 실행 시간에 오류 발생
JavaScript
복사
업 캐스팅 된 참조변수를 명시적 형변환을 통해 다운 캐스팅하는 것은 가능
Person p = new UnivStudent(); UnivStudent s = (UnivStudent)p; //정상
JavaScript
복사

instanceof

=⇒ true / false로 결과를 반환
업캐스팅시 변수를 가리키는 객체의 타입이 어떤 것인지 구분하기 어려울 때 사용
1.
parent instanceof Parent : 부모가 본인 집을 찾았으니 true
2.
child instanceof Parent : 자식이 상속 받은 부모 집을 찾았으니 true (상속을 받았으니 자기 집이라 해도 무방하다?)
3.
parent instanceof Child : 부모가 자식 집을 찾았으니 false (자식 집은 자식 집이지 부모 집은 아니니까)
4.
child instanceof Child : 자식이 본인 집을 찾았으니 true
복습한 부분
다형성 활용&이유
오버라이딩 & 오버로딩 차이
새로 알게 된 점
다형성과 업&다운캐스팅의 연관성과 instancof의 사용이유