//BankAccount 클래스 (메인메소드 없음)
public class BankAccount {
// 필드
private String accNo; // 계좌번호
private long balance; // 잔액
// 생성자
public BankAccount(String accNo, long balance) { //Bank b = new BankAccount("1234, 50000);
this.accNo = accNo;
this.balance = balance;
}
// 메소드
// 1. 입금(마이너스 입금 불가)
public void deposit(long money) { // b.deposit(50000); (=b 계좌에 50000원 입금)
if(money < 0)
return; // 반환타입이 void인 메소드를 종료하는 코드
balance += money;
}
// 2. 출금(마이너스 출금, 잔액보다 큰 출금 불가)
// 실제로 출금된 금액을 반환
public long withdraw(long money) { // long 출금액 = b.withdrawal(50000);
if(money < 0 || money > balance)
return 0; // void가 아닌 long이기 때문에 return 뒤에 출금금액인 0이 붙음.
balance -= money;
return money; // 출금 금액을 리턴
}
// 3. 이체(출금 -> 입금)
public void transfer(BankAccount other, long money) {
// 내 통장에서 출금된 금액만큼 상대 계좌에 입금한다.
other.deposit(withdraw(money));
}
// 4. 계좌 정보 확인
public void accInfo() {
System.out.println("계좌번호: " + accNo + ", 잔고: " + balance + "원");
}
// BankAccount 클래스 (메인메소드)
public static void main(String[] args) {
BankAccount me = new BankAccount("1234", 50000);
BankAccount mom = new BankAccount("4567", 100000);
mom.transfer(me, 50000); // 엄마가 나에게 50000원 이체
me.accInfo();
mom.accInfo();
}
}
출력:
계좌번호: 1234, 잔고: 100000원
계좌번호: 4567, 잔고: 50000원