함수(Function) 또는 메서드(Method) 는 특정 작업을 수행하는 코드 블록입니다.
Java에서는 클래스 내부에 정의되며, 코드의 재사용성과 구조화를 높이는 데 필수적인 개념입니다.
리턴타입 함수명(매개변수목록) {
// 실행 코드
return 반환값;
}
예시:
public int add(int a, int b) {
int sum = a + b;
return sum;
}
구성요소 |
설명 |
---|---|
접근제어자 |
public, private 등 |
반환형 |
결과로 반환되는 값의 자료형 |
함수명 |
메서드 이름 (소문자로 시작 권장) |
매개변수 |
외부로부터 전달받는 값들 |
return문 |
결과를 반환 |
매개변수(Parameter): 함수를 정의할 때 선언한 변수
인자(Argument): 함수를 호출할 때 실제로 전달하는 값
예시:
public void greet(String name) {
System.out.println("Hello, " + name);
}
// 호출
greet("Alice"); // name에 "Alice"가 전달됨
함수가 작업을 마친 후 결과를 돌려주는 것.
void는 반환값이 없다는 뜻입니다.
public int square(int x) {
return x * x;
}
public void printHello() {
System.out.println("Hello");
}
int result = square(5);
printHello();
같은 이름의 함수지만 매개변수가 다르면 여러 개 정의 가능
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
오버로딩은 다형성(polymorphism) 의 한 형태로 이해할 수 있으며, 객체지향 설계에 유리한 방식입니다.
public: 어디서든 접근 가능
private: 클래스 내부에서만 접근 가능
protected: 같은 패키지 또는 자식 클래스에서 접근 가능
default (지정하지 않음): 같은 패키지에서만 접근 가능
static 함수는 객체 생성 없이 호출 가능
보통 유틸리티 함수에 사용
public static int multiply(int x, int y) {
return x * y;
}
// 호출 예시
int result = MyClass.multiply(3, 4);
public class Calculator {
// 덧셈
public int add(int a, int b) {
return a + b;
}
// 곱셈 (static)
public static int multiply(int a, int b) {
return a * b;
}
// 메시지 출력
public void printMessage(String msg) {
System.out.println("Message: " + msg);
}
public static void main(String[] args) {
Calculator calc = new Calculator();
int sum = calc.add(10, 20);
System.out.println("Sum: " + sum);
int product = Calculator.multiply(3, 5);
System.out.println("Product: " + product);
calc.printMessage("Java 메서드 학습 중");
}
}
재사용성 증가: 중복 코드 제거
가독성 향상: 코드 블록화로 읽기 쉬움
유지보수 용이: 함수 단위로 수정 가능
테스트 및 디버깅 쉬움
실습 중심: 입출력 없는 간단한 함수부터 시작
연습 문제 제시: 최대값, 절댓값, 팩토리얼, 소수 판별 함수 만들기
static과 인스턴스 메서드 차이를 실습을 통해 명확히 전달
메서드 오버로딩 실습을 통해 다형성 개념 예고
항목 |
설명 |
---|---|
메서드 정의 |
리턴타입, 함수명, 매개변수, 실행 코드 포함 |
호출 방식 |
객체.메서드명(인자); 또는 클래스명.메서드명() |
반환값 |
return 문으로 결과 반환 (void는 없음) |
오버로딩 |
매개변수의 타입/개수에 따라 여러 함수 정의 |
static 메서드 |
객체 없이 클래스명으로 호출 가능 |