메소드 (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);
	}
}