개발

[Java] 메소드란?

GoblinMode 2024. 2. 7. 12:00
728x90
반응형

자바에서 메소드는 프로그램의 기능을 모듈화하고, 재사용성과 유지보수성을 높이는 데에 중요한 역할을 합니다.
자바 메소드의 기본 구조와 작성 방법 자바 메소드의 선언, 매개변수, 반환 값 등에 대해 설명하고, 메소드를 작성하는 일반적인 방법을 소개합니다.
메소드의 접근 제어자와 예외 처리 메소드의 접근 제어자(public, private, protected)에 따른 접근 범위와 예외 처리 방법에 대해 설명합니다.

 

매개변수에 종류

1. 값에 의한 호출(Call by Value):
값에 의한 호출 방식은 매개변수로 전달되는 값의 복사본이 메소드에 전달됩니다. 이 경우 메소드 내에서 매개변수의 값을 변경하더라도 원본 변수의 값은 변하지 않습니다.

public void changeValue(int value) {
    value = 10;  // 매개변수 값 변경
}

public static void main(String[] args) {
    int num = 5;
    changeValue(num);
    System.out.println(num);  // 출력 결과: 5 (변수 값 변화 없음)
}

 

 

2. 참조에 의한 호출(Call by Reference):
참조에 의한 호출 방식은 매개변수로 전달되는 값의 주소(참조)가 메소드에 전달됩니다. 이 경우 메소드 내에서 매개변수 값을 변경하면 원본 변수의 값도 함께 변경됩니다.

public void changeValue(int[] array) {
    array[0] = 10;  // 매개변수 값 변경
}

public static void main(String[] args) {
    int[] numbers = {5, 7, 9};
    changeValue(numbers);
    System.out.println(numbers[0]);  // 출력 결과: 10 (변수 값 변화 있음)
}

 

3. 가변 인자(Varargs):
가변 인자는 메소드의 매개변수 개수를 유연하게 처리할 수 있도록 해줍니다. 가변 인자는 메소드 선언 시 매개변수 타입 뒤에 "..."을 붙여서 표시하며, 배열로 전달됩니다.

public void printValues(String... values) {
    for (String value : values) {
        System.out.println(value);
    }
}

public static void main(String[] args) {
    printValues("Java", "Python", "C++");
}
```
출력 결과:
```
Java
Python
C++
```

 

위와 같이 자바에서는 값에 의한 호출과 참조에 의한 호출을 통해 매개변수를 전달하고, 가변 인자를 사용하여 유연한 매개변수 처리를 할 수 있습니다. 이를 활용하여 메소드를 유연하게 설계하고 활용할 수 있습니다.

 

접근제어자의 종류

1. public 접근 제어자는 어떤 클래스에서든 접근할 수 있습니다. 즉, 해당 메소드는 외부 클래스, 동일한 패키지에 있는 다른 클래스, 그리고 상속받은 클래스에서 모두 접근 가능합니다.

public class MyClass {
    public void publicMethod() {
        // 접근 가능한 코드
    }
}

 

2. private 접근 제어자는 해당 클래스 내부에서만 접근할 수 있습니다. 외부 클래스나 상속받은 클래스에서는 직접 접근할 수 없으며, 해당 클래스의 다른 메소드를 통해서만 호출할 수 있습니다.

public class MyClass {
    private void privateMethod() {
        // 접근 가능한 코드
    }
}

 

3. protected 접근 제어자는 동일한 패키지에 있는 다른 클래스에서는 접근할 수 있으며, 상속받은 클래스에서도 접근할 수 있습니다. 다른 패키지에 있는 클래스에서는 접근할 수 없습니다.

public class MyClass {
    protected void protectedMethod() {
        // 접근 가능한 코드
    }
}

 

4. 접근 제어자를 명시하지 않은 경우, 해당 메소드는 default 접근 제어자를 갖게 됩니다. default 접근 제어자는 동일한 패키지에 있는 다른 클래스에서만 접근할 수 있으며, 다른 패키지에 있는 클래스에서는 접근할 수 없습니다.

public class MyClass {
    void defaultMethod() {
        // 접근 가능한 코드
    }
}

 

 

728x90
반응형