인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

별다방님의 프로필 이미지
별다방

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Java언어 기출문제의 변형

Java 언어 기출문제의 변형 질문

작성

·

136

0

안녕하세요,

21:43초에서

ADD 5~~ ADD 0 까지 출력하는데

이 출력이 어떻게되는가요?

Class Sum에서 재귀함수까지 알겠습니다.

다만 print가 어디서 출력이 되는지 모르겠습니다

답변 2

0

자식 클래스인 Adv에서 Adv 생성자가 없어서

Adv as = new Adv(): -> 줄에서 별다른 조치없이

그 다음줄인 Sum: ~ 을 출력해야 하는 것 아닌가요?
Sum: 15가 제일 하단에 출력되는 이유가 헷갈립니다ㅜ


주말코딩님의 프로필 이미지
주말코딩
지식공유자

네, 말씀하신 대로 Adv as = new Adv();이 줄은 아무 역할도 안합니다.맨 아래 Sum: 15가 출력되는 이유는 as.sum(5)의 최종 리턴값이 15이고,메인함수 두번째 줄이 println("Sum: ", as.sum(5)); 이기 때문입니다.저 Add 5~1은 함수가 실행되는 과정에서의 산출물입니다. (int sum 메서드 부분)결국 출력은 Add 5~1을 쭉하지만, 최종의 리턴값은 한 번에 sum이 되어서 15로 돌려주기 때문에 메인함수의 마지막 줄에서는 해당 리턴값을 받아서 출력합니다.

감사합니다! 재귀함수 최종 리턴값에 대한 부수물로 Add 5 ~ 1 출력 후 최종 리턴값 15 입력
확인했습니다 :)

주말코딩님의 프로필 이미지
주말코딩
지식공유자

네 감사합니다. 시간 여유가 되실 때 좋은 수강평 하나 꼭 부탁드립니다.. 😃

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요.

우선 sum이 재귀함수면서 자식메서드를 호출하시는 것은 이해되셨을까요?

같은 sum이라는 메서드명이 있는데, 자식메서드에서도 똑같으니 재정의(override)하게 됩니다.

그러면 부모에서 사용할 때 자식메서드를 호출하게 됩니다.

 

자식의 sum 가장 첫 줄에 System.out.println("Add" + n);이 있습니다.

거기에서 출력이 발생합니다.

 

감사합니다.

별다방님의 프로필 이미지
별다방

작성한 질문수

질문하기