-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
오버라이딩 질문이요
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
깊알못nodeep
지식공유자2021.12.20
안녕하세요.
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 클래스로 가셔서 상속된 부분을 지워보시면 두 방식다 오류가 나는 것을 확인할 수가 있습니다.
답변 1