작성
·
26
·
수정됨
0
안녕하세요! 접근제어자 강의 중 BankAccount를 클래스를 만들어 활용하는 내용입니다. 입금 & 출금 메서드를 만들고 있고, -100원이나 0원처럼 부적절한 금액이 입금되지 않도록 private boolean isAmountValid를 활용하여 amount>0인지 확인하는 중입니다.
이해가 잘 안 가는 부분이: isAmountValid는 반환값이 boolean이니 return amount > 0이면 true가 반환되는 것인가요? if(true)이면 그냥 무한반복 아닌가요? 만약에 amount가 0보다 작으면 boolean이 false로 반환되나요, 아니면 아예 return amount > 0 에 해당되지 않아서 값을 반환하지 않는 건가요?
boolean이 너무 헷갈려서 질문을 잘 한 것인지 조차 모르겠네요.. 헷갈리신다면 죄송합니다.
package access;
public class BankAccount {
private int balance;
public BankAccount() { //어차피 초기값 0이어서 없어도 되는데 public 사용해보려고
balance = 0;
}
//public 메서드: deposit
public void deposit(int amount) {
if (isAmountValid(amount)) { //isAmoutnValid(amount) = true 라고 왜 표기를 안 해도 되지?
balance += amount;
} else {
System.out.println("유효하지 않은 금액입니다.");
}
}
private boolean isAmountValid(int amount) { //정상적인 금액 입력됐는지 검증하는 로직. 내부에서만 쓸 거임.
//금액이 0보다 커야함
return amount > 0; //반환값이 boolean이므로 true/false가 반환됨.
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
sy k님, 질문 주신 내용에 대해 설명드리겠습니다.
isAmountValid
메서드는 amount > 0
라는 조건에 대해 boolean
값을 반환하는 방식으로 설계되어 있습니다.
즉, 이 메서드는 전달받은 amount
값이 0보다 크면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
return amount > 0;
구문에서 amount > 0
표현식은 amount
가 0보다 큰지 확인하여 결과를 boolean
으로 반환합니다. 따라서, return
키워드에 의해 메서드의 결과로 true
또는 false
가 반환됩니다.deposit
메서드 안에 있는 if (isAmountValid(amount))
구문은 isAmountValid(amount)
가 true
일 때만 실행됩니다. 따라서, amount
가 0보다 클 때만 해당 코드 블록 내부의 balance += amount;
가 실행되어 입금됩니다.amount
가 0보다 작거나 같다면, isAmountValid(amount)
는 false
를 반환하게 됩니다. 이 경우 else
문의 “유효하지 않은 금액입니다.” 출력문이 실행됩니다.잘 이해가 가지 않으셨다면 추가로 질문해 주세요! 필요한 만큼 설명 드리겠습니다. 😊
추가 정보는 Spring Data JDBC의 Transactional Query Methods 문서를 참고하실 수 있습니다.