강의

멘토링

로드맵

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

qpdlqg님의 프로필 이미지
qpdlqg

작성한 질문수

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

문제와 풀이

문제와풀이2번 출력

작성

·

502

0

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

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

package poly.expay;

public class PayService{


    public void processPay(String name, int amount) {
        boolean result;
        System.out.println("결제를 시작합니다: " + "option = " + name + ", amount = " + amount);
        if(name.equals("kakao")) {
            KakaoPay kakaoPay = new KakaoPay();
            result = kakaoPay.Pay(amount);
        }
    }
}

다름이 아니라 result값에 kakaoPay.Pay(amount)를 넣는건 알겠는데 그반환값도 true로 되구요 근데 왜 메인에서 출력이 되는건가여? 제가 생각하기로는 result = true라고 생각을 하였는데, 따로 출력을 하기위해선 kakaoPay.Pay(amount); 만 써야 출력이 되지 않나요? 아님 result에 값을 대입함과 동시에 출력도 되는지요.

퀴즈

객체 지향 프로그래밍(OOP)이 기존 방식과 차별화되는 핵심 접근 방식은 무엇일까요?

프로그램을 순차적인 명령 목록으로 구성

독립적인 객체들의 협력을 통해 데이터 처리

하나의 거대한 함수로 모든 기능 구현

데이터와 처리를 분리하여 관리

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. qpdlqg님

생각하는자님께서 잘 말씀해주셨는데요.

kakaoPay.Pay(amount); 를 호출하면 이 메서드가 실행됩니다. 그리고 이 메서드에 있는 내용들이 출력됩니다.

이 메서드의 호출이 끝나면 이 메서드의 호출 결과가 result에 담기게 됩니다.

지금 스택 구조에는 main() -> processPay()가 담겨 있는 상황이고, 여기서 kakaoPay.Pay(amount)를 호출하게 되면 그때는

main() -> processPay() -> Pay(amount)가 호출 됩니다. Pay(amount)의 결과를 반환하면 이때는 main() -> processPay()가 실행중이게 됩니다.

processPay()의 실행이 종료되면 main()으로 돌아갑니다.

감사합니다.

qpdlqg님의 프로필 이미지
qpdlqg
질문자

정말 감사드립니다~~ 이해되었습니다!!

0

이거는 스택 구조를 좀 생각하시면 좋을 것 같습니다. 스택 구조를 기억하시면 실행 영역에서 대기하고 있다가 명령이 종료되면 다음 것을 실행하고, 나중에 가셔야 맨 마지막인 main 메서드가 실행하는것을 생각하시면 답이 풀릴것 같습니다.

qpdlqg님의 프로필 이미지
qpdlqg
질문자

제가 그 부분을 놓쳤던 것 같아요 감사합니다!!

qpdlqg님의 프로필 이미지
qpdlqg

작성한 질문수

질문하기