메소드 (Method)
메소드를 선언할 때
- 반환값이 없는 경우, 반환타입은 void를 사용한다.
- 메소드는 오직 한 종류의 값만 반환할 수 있다.
- 메소드의 반환 타입이 void가 아닌 경우, 구현부 안에는 return 반환값 구문이 반드시 포함되어 있어야 한다.
- 메소드명은 보통 동사형이다.
- 매개변수(parameter)는 메소드가 작업을 수행하는 데 필요한 값들을 제공받기 위한 변수이며,
각 변수들은 ‘, ‘로 구분된다.
- 매개변수의 타입이 같아도 변수의 타입을 생략할 수 없다.
메소드 예시
int plus (int x, int y) {...} // 실행 가능
int plus (int x, y) {...} // 에러 발생! 각 매개변수에 매개변수의 타입도 있어야 한다
메소드의 종류
- 보통 반환값이 있는 경우는 찾거나, 조회하거나, 제공하는 기능을 구현할 때
- 반환값이 없는 경우는 저장, 추가, 변경, 삭제하는 기능을 구현할 때 사용한다.
// 1.
데이터타입 메소드명 (데이터타입 변수명, 데이터타입 변수명) { // 반환타입, 매개변수 둘 다 있는 경우
...
return 반환값;
}
// 2.
데이터타입 메소드명 () { // 반환타입만 있는 경우
...
return 반환값;
}
// 3.
void 메소드명 (데이터타입 변수명, 데이터타입 변수명) { // 매개변수만 있는 경우
...
}
// 4.
void 메소드명 () { // 반환타입, 매개변수 둘 다 없는 경우
...
}
메소드 예제
- 멤버 메소드는 생성된 객체의 멤버이다.
- 멤버 메소드는 객체 생성 후에 사용할 수 있다.
public class BankAccount {
// 멤버 변수 (필드 설정)
long balance = 100_000_000L;
int password = 1234;
// 멤버 메소드 (기능 설정)
// 현재 잔액을 반환하는 기능
long getCurrentBalance () {
return balance;
}
// 금액을 전달받아서 잔액을 변경하는 기능
void updateBalance (long depositMoney) {
balance += depositMoney;
}
// 이전 비밀번호와 새 비밀번호를 전달받아서 비밀번호를 변경하는 기능
void changePassword (int prevPassword, int newPassword) {
if (password != prevPassword) {
System.out.println("비밀번호가 일치하지 않습니다.");
} else {
password = newPassword;
}
}
}
public static void main(String[] args) {
// 멤버 메소드를 사용하기 위한 객체 생성
// b1, b2, b3은 각각 BankAccount 객체의 주소값을 갖고 있는 참조변수이다
BankAccount b1 = new BankAccount();
BankAccount b2 = new BankAccount();
BankAccount b3 = new BankAccount();
// 각 객체의 멤버변수 초기화
b1.balance = 10000;
b1.password = 1111;
b2.balance = 1_000_000;
b2.password = 1234;
b3.balance = 250_000;
b3.password = 1212;
// 각 객체의 잔액을 조회해서 화면에 출력하기
// getCurrentBalance 메소드는 반환값이 존재하는 메소드이기 때문에,
// 반환값을 저장할 변수(value1, value2, value3)가 필요하다.
long value1 = b1.getCurrentBalance(); // value1에는 10000이 대입된다
long value2 = b2.getCurrentBalance();
long value3 = b3.getCurrentBalance();
System.out.println("첫번째 통장의 현재 잔액: " +value1);
System.out.println("두번째 통장의 현재 잔액: " +value2);
System.out.println("세번째 통장의 현재 잔액: " +value3);
// 각 객체의 잔액을 전부 합친 총 자산을 계산해서 화면에 출력하기
long totalBalance = value1 + value2 + value3;
System.out.println("총 자산: "+totalBalance);
// 각 객체의 잔액을 변경하기
b1.updateBalance(300000);
b2.updateBalance(500000);
b3.updateBalance(700000);
// 각 객체의 잔액이 변경된 후 잔액을 조회해서 화면에 출력하기
value1 = b1.getCurrentBalance();
value2 = b2.getCurrentBalance();
value3 = b3.getCurrentBalance();
System.out.println("잔액 변경 후 첫번째 통장의 현재 잔액: " +value1);
System.out.println("잔액 변경 후 두번째 통장의 현재 잔액: " +value2);
System.out.println("잔액 변경 후 세번째 통장의 현재 잔액: " +value3);
}
}