반응형


자바에서는 함수(Function)를 메서드(Method)라고 한다.


Method는 자주 사용되는 기능을 별도로 묶어 모듈화 한
한 번 정의해 두고 필요할 때 호출(Call)하여 사용.
클래스의 멤버로 속해 있어야 한다.

 

메서드 형식


우리가 처음부터 사용하던 main역시 메서드이다.
main 메서드는 클래스에 소속되어 프로그램의 시작 지점으로 동작

 


접근 제한자, 지정 예약어는 클래스를 공부할 때 보도록 하고
throws 예외 클래스 부분 역시 예외처리에서 확인할 것이다.


여기서는 메서드의 다음 부분만 이해하고 활용하도록 한다.
 - 반환 자료형(return type)
 - 메서드 이름(method identity)
 - (매개변수들)(parameters)


예제 하나를 작성하여 실행한다.
    이 메서드 파트의 실습 시 정의하는 메서드에 static을 붙여준다.
    main메서드에서 우리가 정의한 메서드를 호출해서 사용해야 하는데
    (main메서드가 static이라 클래스가 로딩되면 호출할 메서드도 함께 로딩되어 있어야 함)

 

 

코드 설명
위 예제를 실행하면 다음과 같은 절차로 실행된다.
 1. main메서드 실행
 2. 1과 2값을 add메서드의 매개변수에 복사하며 호출
 3. add메서드 실행
 4. 매개변수 a와 b값을 더해서 sum에 대입
 5. sum의 값을 호출했던 곳으로 돌려주고(return) add메서드 종료
 6. add메서드로부터 반환 받은 sum의 값을 ret변수에 대입
 7. System.out.println으로 결과 ret변수의 값을 콘솔에 출력

 

실행결과


메서드의 각 부분 의미

 

메서드를 사용하는 이유?
다음 예제의 문제점이라 할 수 있는 것이 있는가?

 


문제라고 하기에는 애매할 수도 있겠지만
만일 위 프로그램 코드가 수십, 수백 줄로 만들어진 경우를 생각해보자.
그리고 중간 중간에 JAVA Programing을 출력하는 기능이 수백 번 사용되어 있다고 가정한다.
이런 상태의 프로그램에서 JAVA Programing출력을 한글로 바꿔달라 등의 변경이 필요하다면?
모든 코드에서 저 부분을 찾아 일일이 수정해야 되는 상황이 생길 수 있다.
물론 위 가정은 텍스트 편집기로 그냥 replace하면 되겠지만
단순한 코드가 아니라 어떤 로직이 있는 코드가 반복적으로 사용되어 진 것이라면?분명 문제다.

그래서 자주 사용하는 기능이 있다면 매번 작성하지 말고
필요한 값과 변경되는 값을 잘 파악하여 메서드를 정의하고
필요한 부분에서 메서드 호출을 통해 사용하도록 코딩을 한다면 어떨까?

위 예제를 메서드를 정의하여 사용하도록 변경해 본다.

 

 


위와 같이 메서드를 이용하여 JAVA Programing을 사용하도록 했다면
기능 변경을 해야 하는 경우 호출하는 부분이 아니라 메서드 하나만 수정하면
해당 메서드를 사용하는 모든 곳에 적용이 될 수 있는 것이다.

따라서 자주 사용하게 되는 기능이 있다면 메서드를 활용하도록 한다.

 

주요 개념 정리
    메서드(Method)
     - 메서드는 작업을 수행하기 위한 명령들의 집합이다.
     - 어떤 값을 전달 받아 기능을 동작하고 결과를 돌려준다.
     - 전달받는 입력 값과 돌려주는 결과 값은 없을 수도 있다.

 

    메서드의 장점
     - 복잡한 코드를 쉽게 줄일 수 있다.
     - 코드 관리가 용이하다.

 

    작성 시 고려할 사항
     - 반복되는 특정 기능을 메서드로 정의한다.
     - 하나의 메서드는 가능한 하나의 기능만 정의한다.

    

    매개변수(parameters)와 인자(arguments)

- 인자(arguments)는 메서드를 호출할 때 전달되는 값

(예제에서 add(1,2); 호출 시 전달하는 1과 2 값이 인자)

- 매개변수(parameters)란 메서드가 호출 될 때 인자를 전달받는 변수

(예제에서 add(int a, int b)메서드의 a와 b변수가 매개변수)

 

메서드 추가 기능

    메서드 오버로딩
     - 메서드의 이름은 같지만 구분 하여 호출 할 수 있는 기능
     - 동일한 기능의 메서드에 자료형만 다르게 해야 할 경우 유용
    조건
     - 메서드가 호출될 때 전달 받는 매개변수로 구분
     - 개수 또는 자료형이 다르면 메서드의 이름이 같아도 구분이 가능

 

예제)

각 메서드를 구분하여 호출이 가능하다.

 


메서드 오버로딩은 객체지향에서 말하는 다형성의 하나이다.
메서드의 매개변수에 따라 호출할 때 전달하는 인자의 자료형으로 구분하여 호출가능

실습으로 앞서 제어문으로 작성된 기능들을 메서드로 정의하고 사용하도록 변경 해본다.

 

반응형

'교육자료 > Java' 카테고리의 다른 글

Java 클래스 (Class기초 문법과 OOP 개념)  (0) 2017.06.15
Java 배열(Array)  (0) 2017.06.14
Java 제어문 break continue  (0) 2017.06.13
Java 제어문 while do~while  (0) 2017.06.13
Java 제어문 for  (0) 2017.06.13

+ Recent posts