인프런 커뮤니티 질문&답변
문제와풀이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()으로 돌아갑니다.
감사합니다.






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