[Java] 06. 함수와 메서드
함수는 어떤 값을 넣으면 어떤 값이 나온다는건 수학으로도 충분히 알고있는 내용입니다
하지만 프로그래밍에 넣는 함수는 느낌이 조금 다르니 사용하면서 차이를 생각해보는게 좋겠습니다
일단 수학에서는 f(x) = ...
또는 y = ...
라는 형태로 함수를 사용했었죠?
프로그래밍에서도 마찬가지로 어떤 값을 넣으면 계산이 끝난 값이 출력되기 마련입니다
1. 함수를 호출하고 값 받아내기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class FunctionClass {
public static int add(int n1, int n2) {
// return n1 + n2;로 작성해도 됨
int result = n1 + n2;
return result;
}
public static void main(String[] args) {
int x = 10, y = 20;
int sum = add(x, y);
System.out.println(sum); // 30 출력
}
}
함수 또는 후술할 메서드의 괄호 안에 사용되는 변수는 ‘매개변수’라고 부릅니다
add(n1, n2)
라는 함수를 새로 작성했습니다
아직은 public
과 static
을 사용하는 이유는 모르니 넘어가고.. int
는 반환 타입, add
는 함수명이 되겠습니다
즉, add
라는 함수를 사용하면 어떤 값이 int
로 반환된다는 것이겠죠
또한, 괄호에 작성한 int n1, int n2
에 작성하는 변수명은 신경써야 할 필요가 없습니다
main
에 작성한 add(x, y)
를 보면 ‘add’ 함수의 n1과 n2에 각각 값이 10, 20이 들어가게 되는 것이죠
2. 메서드 사용
메서드는 클래스 내부에 구현되는 함수입니다
저희가 위에서 함수를 사용하기 위해, 정의만 하고 sum
을 작성하였습니다
하지만 메서드는 클래스를 불러와야 하는 점에서 함수와 차이점이 있습니다
바로 예제를 보도록 합시다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/** FunctionClass **/
public class FunctionClass {
public int add(int n1, int n2) {
// return n1 + n2;로 작성해도 됨
int result = n1 + n2;
return result;
}
}
/** MethodClass **/
public class MethodClass {
public static void main(String[] args) {
FunctionClass f = new FunctionClass(); // 인스턴스 생성
System.out.println(f.add(10, 20)); // 30 출력
}
}
지금은 모르는 내용이니 <[클래스명] [인스턴스명] = new [클래스명];>으로 만든다고 생각하며 넘어갑시다
‘FunctionClass’를 수정하고 새 클래스 ‘MethodClass’를 만든 뒤 main
을 실행시키면 30이 출력됩니다
여기서 ‘add’ 함수를 사용하고 싶다면 ‘FunctionClass’라는 클래스를 불러와서 인스턴스 생성을 해야되는 것이죠
만약 처음 함수 예제에서 ‘static’을 지운다면, ‘FunctionClass’에 main
이 있더라도 인스턴스를 생성해야 합니다
2-2. 함수와 메서드를 사용하는 경우
함수는 위에서 단순히 계산을 하는 것 처럼, 보통 범용적으로 쓰이는 경우에 작성됩니다
하지만 메서드는 클래스에서 작동되어야 하는 느낌이 강합니다
예를 들어 사람의 정보(나이, 키, 성별 등)가 들어있는 “person” 클래스가 있고
이 클래스에서 해당 인원의 정보를 출력해주는 함수를 만들 경우, 이 함수는 메서드가 되는 것입니다
‘인스턴스’ 때문에 내용이 헷갈릴 수 있으니 다음 글에서 정리하여 작성하도록 하겠습니다