Java 메소드(Method)

김소희·2024년 10월 12일

메소드(Method) = 함수(faction)

다른 언어에서는 함수라고도 부르는데 자바에서는 메소드라고 부른다.
메소드는 서로 연관된 명령을 그루핑해서 이름을 붙인 것이다.
메소드나 객체지향과 같은 개념들은 웅장하고, 결함이 없고, 유지보수가 쉬운 규모있는 애플리케이션을 만들기 위해 기본이다. 인간의 인지기능으로는 한계가 있기 때문에 다양한 기능들을 질서정연하게 정리하여 필요할 때 마다 쉽게 꺼내쓸 수 있게 도와주는 정리정돈의 도구로 복잡한 코드를 깔끔하게 정리시켜주고 이미 정의해 놓은 코드를 재사용할 수 있게 해주는 유용함을 배워보자.

만약 메소드가 없다면❓

메소드의 정의(define)

직접 메소드를 만드는 것을 정의라고 하고, 만들어진 메소드를 실행하는 것을 호출이라고 한다.

  public static int add (int a, int b){  // 메소드 시그니처
    int result = a+b;                    // 메소드 바디
    return result;
  }

  접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
       // 구현부
  } 
  1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시
  2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시
  3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시
  4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시
  5. 구현부 : 메서드가 구체적으로 어떤 기능을 수행할지에 대한 코드를 작성하는 부분으로 return 키워드를 사용해 처리 결과를 반환할 수 있다.

메소드의 호출(call)

메서드는 정의하는 것만으로 실행되지 않는다. 메서드를 정의하는 것은 단순히 동작에 대한 처리 과정을 기술한 것이다. 따라서 메서드를 직접 사용하기 위해 다음과 같은 방법으로 호출해야 한다.

  add(111, 222);
  1. 객체참조변수이름.메소드이름(); // 매개변수가 없는 메소드의 호출
  2. 객체참조변수이름.메소드이름(인수1, 인수2, ...); // 매개변수가 있는 메소드의 호출

main 메소드

자바로 프로그램을 만들때는 반드시 메인 메소드의 중괄호 안에 실행되기를 기대하는 로직을 위치시켜서 구현해야하고 자바 프로그램을 실행시키면 메인 메소드가 실행되게끔 약속되어 있다.
main메소드는 리턴타입이 void이기 때문에 retuen이 없어도 실행가능하다.

public static void main(String[] args) {

}

입력

프로그램에서 가변적인 것과 고정적인 것을 분리하여
가변적인 부분을 호출시에 인자를 메소드의 매개 변수(parameter)로 받고
고정적인 것은 메소드의 로직으로 정의하여 재활용성을 올릴 수 있다.

❗ 메소드의 맥락을 이해할 때 매개변수와 출력값을 확인하고 정의 부분을 확인하면서 파악하면 좋은 팁이 될 수 있다.

출력

메소드가 동작한 결과를 돌려준다는 의미로 return이라는 키워드를 통해 메소드 결과 값을 메소드 외부로 출력할 수 있다.
프로그램은 return이라는 키워드를 발견하면 뒤에 어떤 로직이 있던지 간에 메소드를 종료시키고 값을 메소드 밖으로 반환하게 된다.

public class MethodDemo6 {
	public static String numbering(int init, int limit) {
    	int i = init;
        String output = "";
        // 들어지는 숫자들을 output이라는 변수에 담기 위해 변수에 빈 값을 할당하였다.
        while (i , limit) {
        	output += i;
        	// 숫자를 화면에 출력하는 대신 변수 output에 담았다.
            i++;
        }
        return output;
    }
    
    public static void main(String[] args) {
    	String result = numbering(1,5);
        // 메소드numbering이 리턴한 값이 변수 result에 담긴다.
        System.out.println(result);
    }
}

메소드의 부품으로서의 가치를 높이기 위해서 println는 메소드 바깥에 위치시켰다.

profile
백엔드 개발자의 노트

0개의 댓글