• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

오버라이딩 질문이요

21.12.19 15:36 작성 조회수 125

0

안녕하세요. 오버라이딩이 이해가 안 가네요.

Ch_22_1 ch_over = (Ch_22_1)ch_2;

부모클래스명 변수명 = (부모클래스명)자식클래스인스턴스명;

이라는 것은 알겠습니다만......

ch_over 변수는 new 키워드를 안 썻으니, ch_2 변수와 메모리를 공유할텐데... 왜 오버라이딩이 되는 걸까 싶습니다...

Ch_22_1 ch_over = new Ch_22_2();

와 무슨 차이점이 있는지 궁금합니다......

 

답변 1

답변을 작성해보세요.

1

안녕하세요.

Ch_22_1 ch_over = (Ch_22_1)ch_2; 

위의 코드는 형변환을 한 것입니다.

결국 이전 에 만든 ch_22_2로 만든 ch_2를 형변환 하여 Ch_22_1 ch_over를 정의해 준것입니다.

즉 Ch_22_1 ch_over 는 ch_2에서 이름만 바뀐 것이 아닌, 엄현히 ch_2와는 다른 객체 입니다.

그리고 Ch_22_1 ch_over = new Ch_22_2(); <-이것도 결국에 ch_22_2로 정의해 줬기 때문에

같은 메소드와 멤버를 사용할 수가 있습니다.

하지만 둘다 오버라이딩이 되었기 때문에 가능한 것입니다.

ch_22_2 클래스로 가셔서 상속된 부분을 지워보시면 두 방식다 오류가 나는 것을 확인할 수가 있습니다.