강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

idenfrin님의 프로필 이미지
idenfrin

작성한 질문수

C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기

오버라이딩 질문이요

작성

·

226

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

깊알못nodeep님의 프로필 이미지
깊알못nodeep
지식공유자

안녕하세요.

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 클래스로 가셔서 상속된 부분을 지워보시면 두 방식다 오류가 나는 것을 확인할 수가 있습니다.

 

 

 

idenfrin님의 프로필 이미지
idenfrin

작성한 질문수

질문하기