☕ 메서드 선언(Method Declaration)
public static int add(int a, int b)
메서드의 선언 부분(메서드 이름, 반환 타입, 매개변수(파라미터) 목록 포함)
메서드 선언 정보를 통해 다른 곳에서 해당 메서드 호출 가능
- public static
- public: 다른 클래스에서 호출할 수 있는 메서드 (접근 제어)
- static: 객체를 생성하지 않고 호출할 수 있는 정적 메서드
- int add(int a, int b)
- int: 메서드 실행 결과를 반환할 때 사용할 반호나 타입 지정
- add: 메서드 이름
- (int a, int b): 파라미터(매개변수), 메서드를 호출할 때 전달하는 입력 값 정의, 해당 메서드 안에서만 사용되는 변수들
☕ 메서드 호출
호출: call("hello", 20)
메서드 정의: int call(String str, int age)
🍪 인수(Argument)
- "hello", 20과 같이 넘기는 값을 Argument라고 칭함
- Argument(아규먼트), 인수, 인자 다 같은 말
- 인수는 ‘인’과 ‘수’의 합성어 → ‘들어가는 수’ → 메서드 내부로 들어가는 값
🍪 매개변수(Parameter)
- 메서드를 정의할 때 선언한 변수인 String str, int age를 매개변수(파라미터)라고 칭함
- 메서드를 호출할 때 인수를 넘기면, 그 인수가 매개변수에 대입됨
- 매개변수는 ‘매개’와 ‘변수’의 합성어 → ‘중간에서 전달하는 변수’ → 메서드 호출부와 메서드 내부 사이에서 값을 전달하는 역할을 하는 변수
☕ 메서드 정의
public static int add(int a, int b) {
// 메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름(매개변수 목록) {
메서드 본문
}
- 제어자(Modifier): public, static과 같은 부분
- 반환 타입(Return Type): 메서드가 실행된 후 반환하는 데이터의 타입을 지정
- 메서드가 값을 반환하지 않는 경우, 없다는 뜻의 void 사용
- ex) void printName(String str)
- 메서드 이름(Method Name): 메서드의 이름, 메서드 호출에 사용
- 매개변수(Parameter): 입력 값, 메서드 내부에서 사용할 수 있는 변수
- 매개변수는 옵션, 입력값이 필요 없는 메서드는 매개변수 지정하지 않아도 됨
- ex) add()
- 메서드 본문(Method Body): 실제 메서드의 코드가 위치, 중괄호 {} 사이에 코드 작성
☕ 메서드 호출과 값 전달
대원칙: 자바는 항상 변수의 값을 복사해서 대입한다
int num1 = 5;
int num2 = num1;
num2 = 10;
값을 복사해서 대입하는 부분
int num2 = num1;
- num1에 있는 값 5를 복사해서 num2에 넣는 것임.
- 복사한다고 표현한 이유는 num1의 값을 읽어도 num1에 있는 기존 값이 유지되고, 새로운 값이 num2에 들어가기 때문임. 마치 num1의 값이 num2에 복사된 것 같음.
- num1이라는 변수 자체가 num2에 들어가는 것이 아님. num1에 들어있는 값을 읽고 복사해서 num2에 넣는 것임.
- 간단하게 num1에 있는 값을 num2에 대입한다고 표현함. 하지만 실제로는 그 값을 복사해서 대입하는 것임.
☕ 메서드 오버로딩
자바는 메서드의 이름뿐만 아니라 매개변수 정보를 함께 사용해서 메서드를 구분
이름이 같고 매개변수가 다른 메서드 정의 가능
- ex) add(int a, int b), add(int a, int b, int c), add(double a, double b)
🍪 오버로딩 규칙
메서드의 이름이 같아도 매개변수의 타입 및 순서가 다르면 오버로딩 가능
반환 타입은 인정x
🍪 메서드 시그니처(method signature)
메서드 시그니처 = 메서드 이름 + 메서드 타입(순서)
- 자바에서 메서드를 구분할 수 있는 고유한 식별자나 서명
- 메서드를 구분할 수 있는 기준
- 메서드 이름이 같아도 메서드 시그니처가 다르면 다른 메서드로 간주
- 반환 타입은 시그니처에 포함 x
☕ 메서드 사용의 장점
- 코드 재사용
- 메서드는 특정 기능을 캡슐화하므로, 필요할 때마다 그 기능을 다시 작성할 필요 없이 해당 메서드를 호출함으로써 코드를 재사용할 수 있다.
- 코드의 가독성
- 이름이 부여된 메서드는 코드가 수행하는 작업을 명확하게 나타내므로, 코드를 읽는 사람에게 추가적인 문맥을 제공한다.
- 모듈성
- 큰 프로그램을 작은, 관리 가능한 부분으로 나눌 수 있다. 이는 코드의 가독성을 향상하고 디버깅을 쉽게 만든다.
- 코드 유지 관리
- 메서드를 사용하면, 코드의 특정 부분에서 문제가 발생하거나 업데이트가 필요한 경우 해당 메서드만 수정하면 된다. 이렇게 하면 전체 코드 베이스에 영향을 주지 않고 변경 사항을 적용할 수 있다.
- 재사용성과 확장성
- 잘 설계된 메서드는 다른 프로그램이나 프로젝트에서도 재사용할 수 있으며, 새로운 기능을 추가하거나 기존 기능을 확장하는 데 유용하다.
- 추상화
- 메서드를 사용하는 곳에서는 메서드의 구현을 몰라도 된다. 프로그램의 다른 부분에서는 복잡한 내부 작업에 대해 알 필요 없이 메서드를 사용할 수 있다.
- 테스트와 디버깅 용이성
- 개별 메서드는 독립적으로 테스트하고 디버그 할 수 있다. 이는 코드의 문제를 신속하게 찾고 수정하는 데 도움이 된다.
[출처] 김영한의 자바 입문
반응형
'Language > Java' 카테고리의 다른 글
[Java] 클래스와 데이터 (0) | 2025.01.08 |
---|---|
[Java] Scanner로 입력 받기 (1) | 2025.01.06 |
[Java] 자바 연산자 (1) | 2025.01.05 |
[Java] 자바 변수 (0) | 2025.01.04 |