함수와 메소드
함수(Function)와 메소드(Method)는 모두 특정 작업을 수행하는 코드 블록이라는 공통점을 가지지만, 자바에서는 소속(Context)에 따라 구분된다.
기본 정의 및 차이점은 다음과 같다.
| 구분 | 함수(Function) | 메소드(Method) |
|---|---|---|
| 소속(Context) | 클래스나 객체에 묶이지 않으며, 독립적으로 존재한다. | 클래스 또는 객체에 종속되어 존재한다. |
| 호출 방법 | 이름만으로 직접 호출한다. | 클래스 또는 객체(. 연산자)를 통해 호출한다. |
| 접근 | 외부에서 접근한다. | 객체의 필드에 접근하고 조작한다. |
| 대표 언어 | C, JavaScript, Python | Java, C++, C# |
자바에서의 용어 사용
자바는 객체 지향 언어로 모든 코드와 로직은 클래스 내부에 정의된다. 따라서 기술적으로 모든 실행 가능한 코드 블록을 메소드라고 부른다.
-
인스턴스 메소드: 특정 객체에 속하며, 객체의 필드를 사용하거나 변경한다.
-
정적 메소드: 클래스 자체에 속하며, 인스턴스 변수가 아닌 정적 변수를 사용하거나, 단순히 유틸리티 기능을 제공한다.
자바에서는 함수라는 용어를 문맥에 따라 다음과 같이 사용한다.
-
함수적 관점: 정적 메소드 중에서도 입력에 대해서만 의존하고 클래스의 상태를 전혀 변경하지 않는 메소드를 함수라고 부르기도 한다.
-
람다 표현식: (Java 8 이후부터)람다 표현식은 클래스에 소속되지 않고 코드 블록 자체를 값처럼 전달하는 익명 함수의 역할을 한다. 이는 함수형 프로그래밍 스타일을 자바에 도입한 핵심 요소이다.