오랜만에 자바 수업을 들었다.
클래스로 들어가기 전, 메서드에 대한 개념을 잡고 가자고 말씀하셨다.
이번 포스팅에서는 메서드와 함수의 차이점과 간단한 메서드를 구현해보도록 하겠다.
: 객체
의 동적인 특성인 행위를 표현하는 것
: 클래스 및 객체(object)와 연관되어 있는 함수
메서드가 뭔지 잘 몰랐던 사람도 메서드를 굉장히 많이 사용했을 것이다.
public static void main(String args[])
에서 많이 봤던 main()
이 바로 메서드이다. 그렇다면 앞의 public static void
는 무슨 뜻이 있는 건지 궁금증이 들 것이다.
도대체 저것들은 무엇인가.
우선 메서드의 예시를 들어보겠다.
a.plus(); // 각각의 예시만 든 것일 뿐
main(); // 실제로 코드를 이렇게 짠 것이 아니다.
어디서 많이 본 것 같지 않은가? C언어
를 배운 사람이라면 단번에 함수
같다고 생각할 것이다. 하지만 우리는 알아야 한다. 비슷한데 각각 다른 이름을 가지고 있다면 분명 다른 기능이 있는 것이다.
메서드와 함수의 차이점의 핵심은 바로 객체
에 있다.
메서드는 클래스 및 객체(object)와 연관되어 있는 함수
이다.
함수는 sum()
abs()
같이 독립적으로 사용된다. 하지만 메서드는 a
라는 객체가 존재할 때, a.plus()
a.sum()
과 같은 형태로 사용된다.
메서드를 간단히 구현해보도록 하자.
public class Method_Test {
public static void main(String args[]) {
System.out.println(sum_method(1, 10));
int res = sum_method(5, 15);
System.out.println(res);
int ans = sum_method(100, 250)+10;
System.out.println(ans);
}
static int sum_method(int begin, int end) {
int sum = 0;
for ( int i = begin; i <= end; i++ ) {
sum += i;
}
return sum;
// System.out.println(sum);
}
}
위의 예시는 1~10
5~15
100~250
까지를 더하는 메서드를 이용한 코드이다. 무언가 새로운 것들이 많이 보이는데 하나하나 찬찬히 뜯어보도록 하겠다.
static int sum_method(int begin, int end) {
int sum = 0;
for ( int i = begin; i <= end; i++ ) {
sum += i;
}
return sum;
// System.out.println(sum);
}
이 부분을 먼저 보도록 하자.
자세히 보면 sum_method
메서드와 main
메서드가 구분되어 있다는 것을 확인할 수 있다. sum_method
에 들어있는 변수와 main
에 있는 변수는 다른 변수가 될 수 있다는 것을 여기서 유추할 수 있다.
그런데 메서드명 앞에 이상한 것들이 다닥다닥 붙어있다. static
과 int
인데 이것들이 의미하는 바는 과연 무엇일까?
static
은 정적메서드
라고 불리는데, 정적(static)
은 고정된이란 의미를 가지고 있다. static
은 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점이 있다.
int
는 우리가 아는 바로 그 int
이다. 정수형
을 의미하는데 무엇의 데이터타입인가 하면, 바로 리턴값의 데이터타입
을 의미한다.
sum_method
메서드 앞에 int
가 있고 리턴값이 sum
이라면 sum
의 데이터타입이 정수형이라는 사실도 알 수 있다.
이번에는 (int begin, int end)
에 대해서 살펴보자.
begin
과 end
는 매개변수
라고 불리는데, 이 매개변수
란 함수를 정의할 때 사용되는 변수를 의미한다.
public class Method_Test {
public static void main(String args[]) {
System.out.println(sum_method(1, 10));
int res = sum_method(5, 15);
System.out.println(res);
int ans = sum_method(100, 250)+10;
System.out.println(ans);
}
static int sum_method(int begin, int end) {
int sum = 0;
for ( int i = begin; i <= end; i++ ) {
sum += i;
}
return sum;
// System.out.println(sum);
}
}
다시 위의 예제로 돌아가서 매개변수
를 이해해보자.
코드의 4번째 줄에 sum_method
메서드와 함께 (1, 10)
이 있는 것을 진작에 알아차렸을 것이다. 이 (1, 10)
은 각각 begin
과 end
에 들어갈 변수 값들이다. sum_method
를 호출하면 1
과 10
의 값이 각각 begin
과 end
에 저장되고, 메서드 안의 코드를 실행한 후 sum
의 값을 리턴하면 4번째 줄로 다시 돌아와 sum
의 값을 출력하게 된다. 이 방식은 7번째, 10번째 줄도 마찬가지이다.
이렇게 보니 훨씬 코드가 간단해보이지 않는가?
메서드는 이렇게 한 프로그램을 만들어두고 다시 쓸 필요 없이 쓰고 싶을 때마다 갖다 쓰면 된다는 편리함과 동시에 코드의 가독성을 높여준다.
이제 메서드를 왜 사용하는지 감이 잡혔는가?