작성
·
412
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에 값을 대입함과 동시에 출력도 되는지요.
답변 2
0
안녕하세요. qpdlqg님
생각하는자님께서 잘 말씀해주셨는데요.
kakaoPay.Pay(amount); 를 호출하면 이 메서드가 실행됩니다. 그리고 이 메서드에 있는 내용들이 출력됩니다.
이 메서드의 호출이 끝나면 이 메서드의 호출 결과가 result에 담기게 됩니다.
지금 스택 구조에는 main() -> processPay()가 담겨 있는 상황이고, 여기서 kakaoPay.Pay(amount)를 호출하게 되면 그때는
main() -> processPay() -> Pay(amount)가 호출 됩니다. Pay(amount)의 결과를 반환하면 이때는 main() -> processPay()가 실행중이게 됩니다.
processPay()의 실행이 종료되면 main()으로 돌아갑니다.
감사합니다.
정말 감사드립니다~~ 이해되었습니다!!