이번에는 upcasting, down casting에 대해서 설명 해 볼까 합니다
우선 upcasting이란?
부모타입에 자식 값을 넣는 것을 말합니다
자 이렇게 m2메소드는 override되게 해 주었고 Parent class를 부모가 Child class는 자식 클래스가 되게 해주었습니다!
매소드1 (m1)은 부모에서만 정의가 되어있고
메소드2 (m2)는 override되어있고
메소드3 (m3)는 자식클래스에만 있습니다!
그리고
이렇게 메인 클래스에서 Parent클래스 안에 Child 클래스를 넣어 주었습니다.
그리고 각각의 메소드를 실행 시키려고 하는데
에러가 뜨네용. 이유를 찾아 봤습니다
그 이유는
그림
“자식” 클래스를 부모에 넣어주면서 부모에 있는 할당 메모리와 자식의 할당메모리의 자이 때문.
이라고 합니다!! 그림을 보시면 이해가 빠르실 겁니다
그렇기 때문에
매소드1 (m1)은 부모에서 불러오고
메소드2 (m2)는 override되어으므로 자식에서 불러오고
메소드3 (m3)는 자식클래스에만 있습니다!, 즉 업캐스팅후에 쓸 수 없는 것이죠!
다음은 다운캐스팅입니다.
먼저 설명 하자면, 다운캐스팅은 그냥 사용 하는 것은 안된다고 합니다!
그 이유는 앞서 설명한 “업캐스팅한 자식클래스의 매소드를 쓸수없는 이유” 와 같은 이유 입니다 바로 메모리!!
부모의 메모리가 더 작기 때문에 자식의 메모리에 넣는 것은 안된다는 것이죠
이러한 이유로 다운 캐스팅은 “업캐스팅된 자식클래스를 다시 자식 타입으로 바꿀 때” 사용 된다고 합니다!
그러면 메소드 3을 다시 사용 할 수 있겠죠?
이렇게 다운 캐스팅을 해주면 된다고 합니다
우리가 float를 int로 바꿔 줄때, (int)10.5. 이런 식으로 표현 하는 것과 마찬 가지 입니다!
이렇게 캐스팅을 알아봤는데요
Casting은 여러가지 타입을 한번에 묶어서 관리 할 수 있다고 합니다
P.S
- Java 프로젝트를 생성 할 때, 가장 높은 클래스는 java.lang.Object라는 class이다. (안중요)
- Intenseof 를 통해 부모 자식 관계를 알 수 있다.
'프로그래밍 > 자바' 카테고리의 다른 글
[자바] 정올 501 : 출력 -자가진단1 (0) | 2023.09.18 |
---|---|
자바 추상 (0) | 2022.01.03 |
자바 상속 (0) | 2021.11.16 |
자바 클래스와 배열 (0) | 2021.11.16 |
자바 클래스 (0) | 2021.11.10 |