inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

캐스팅의 종류

캐스팅 관련 질문

213

명석

작성한 질문수 15

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

Parent poly = new Child();

Child child = (Child) poly;

poly의 타입이 Child로 변하는 것은 아니다. 해당 참조값을 꺼내고 꺼낸 참조값이 Child타입이 되는것이다. 라고 되있는데

이부분이 잘 이해가 가질 않습니다. poly는 결국 변수명일 뿐이고 핵심은 참조값인데 poly라는 객체의 참조값의 타입이 변경 된다는게 결국 poly의 타입이 변경된다는거랑 같은 말 아닌가요?

결과적으로 그냥 이 부분이 그래서 무엇을 뜻하는건지 모르겠습니다.

그냥 poly의 타입이 Child로 바꿔서 쓴다고 이해해도 상관없지 않나요?

java 객체지향

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

명석님의 질문은 자바의 다형성과 타입 캐스팅, 특히 다운캐스팅에 관한 내용입니다. 여기서 궁금증은 변수 타입 변환과 참조값 타입 변환의 구분에 대한 이해에 관한 것으로 보입니다. 이 부분에 대해 명확히 설명해 드리겠습니다.

Java에서 Parent poly = new Child(); 코드는 poly라는 참조 변수가 Child 타입의 인스턴스를 참조하도록 합니다. 이때 poly는 참조변수로서 Parent 타입을 유지하면서도 실제로 가리키고 있는 객체는 Child 타입의 인스턴스입니다. 이를 다형성의 한 예로 볼 수 있습니다. 다만, 이 상태에서 poly 변수를 통해 Child 인스턴스에만 존재하는 메서드를 호출하려고 하면 컴파일 오류가 발생하게 됩니다. 왜냐하면 컴파일러는 poly의 타입을 Parent로 인식하기 때문입니다. 따라서 polyChild 타입의 기능을 사용하고자 할 때는 명시적으로 Child 타입으로 캐스팅해줘야 합니다(Child child = (Child) poly;).

명석님의 질문에 호응하여, 이와 비슷한 상황에 대한 질문 및 답변 링크를 아래에 제공해 드립니다.

이 글들에서는 자바의 다형성 및 다운캐스팅에 관해 상세하게 설명하고 있습니다. 목적은 참조변수의 타입과 실제 참조하는 객체의 타입 간의 구분 및 변환 과정을 이해하는 것입니다. poly의 타입이 Child로 바뀐다고 이해하기보다는, poly가 참조하는 객체를 Child 타입으로 접근하여 사용할 수 있게 해주는 것이라고 이해하는 것이 적절합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

질문있습니다

0

28

1

1번 문제 질문입니다.

0

33

1

음악플레이어 문제 중 코드질문

0

27

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

70

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

76

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

97

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

76

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

87

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2