Language/JAVA

[JAVA] 메서드

IT수정 2024. 9. 4. 14:01

메서드 선언과 호출

메서드 선언은 객체의 동작을 실행 블록으로 정의하는 것을 말하고, 메서드 호출은 실행 블록을 실제로 실행하는 것을 말한다. 메서드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있기 때문에 객체 간의 상호작용 방법을 정의하는 것이라고 볼 수 있다.

 

메서드 선언

리턴타입 메서드명 (매개변수, ...) {
	실행 코드;
    }

 

리턴 타입

리턴 타입은 메서드가 실행한 후 호출한 곳으로 전달하는 결괏값의 타입을 말한다. 리턴값이 없는 메서드는 void로 작성해야 한다.

void powerOn() {...} // 리턴값이 없는 메서드 선언
double divide(int x, int y) {...} // double 타입 값을 리턴하는 메서드 선언

 

리턴 타입이 있는 메서드는 실행 블록 안에서 return 문으로 리턴값을 반드시 지정해야 한다.

 

메서드명

첫 문자를 소문자로 시작하고, 캐멀 스타일로 작성한다.

 

매개변수

매개변수는 메소드를 호출할 때 매개값을 받기 위해 사용된다. 전달할 매개값이 없다면 매개변수는 생략할 수 있다.

 

메서드 호출

메서드 호출은 메서드 블록을 실행하는 것을 말한다. 클래스에서 메서드를 선언했다고 해서 바로 호출할 수 있는 것은 아니다. 메서드는 객체의 동작이므로 객체가 존재하지 않으면 메서드를 호출할 수 없다. 클래스로부터 객체가 생성된 후에 메서드는 생성자와 다른 메서드 내부에서 호출될 수 있고, 객체 외부에서도 호출될 수 있다.

 

객체 내부에서는 단순히 메서드 명으로 호출하면 되지만, 외부 객체에서는 참조 변수와 도트(.) 연산자를 이용해서 호출한다. 또한 메서드가 매개변수를 가지고 있을 때에는 호출할 때 매개변수의 타입과 수에 맞게 매개값을 제공해야 한다.

 

메서드가 리턴값이 있을 경우에는 대입 연산자를 사용해서 다음과 같이 리턴값을 변수에 저장할 수 있다. 이때 변수 타입은 메서드의 리턴 타입과 동일하거나 자동 타입 변환될 수 있어야 한다.

타입 변수 = 메서드();

 

가변길이 매개변수

메서드를 호출할 때에는 매개변수의 개수에 맞게 매개값을 제공해야 한다. 만약 메서드가 가변길이 매개변수를 가지고 있다면 매개변수의 개수와 상관없이 매개값을 줄 수 있다. 가변길이 매개변수는 다음과 같이 선언한다.

int sum(int ... values) {
}

 

가변길이 매개변수는 메서드 호출 시 매개값을 쉼표로 구분해서 개수와 상관없이 제공할 수 있다.

int result = sum(1, 2, 3);

 

매개값들은 자동으로 배열 항목으로 변환되어 메서드에서 사용된다. 그렇기 때문에 메서드 호출 시 직접 배열을 매개값으로 제공해도 된다.

int[] values = { 1, 2, 3 };
int result = sum(values);

int result = sum(new int[] { 1, 2, 3 });

 

가변길이 매개변수 예제

public class Computer {
	int sum(int ... values) {
    	int sum = 0;
        
        for(int i = 0; i < values.length; i++) {
        	sum += values[i];
            }
           
        return sum;
        }
     }
public class ComputerExample {
	public static void main(String[] args) {
    	Computer myCom = new Computer();
        
        int result1 = myCom.sum(1, 2, 3);
        System.out.println(result1);
        
        int[] values = { 1, 2, 3, 4, 5 };
        int result2 = myCom.sum(values);
       	System.out.println(result2);
        
        int result3 = myCom.sum(new int[] { 1, 2, 3, 4, 5 });
        System.out.println(result3);
        }
     }

 

 

실행 결과

6
15
15

 

return 문

return 문은 메서드의 실행을 강제 종료하고 호출한 곳으로 돌아간다는 의미이다. 메서드 선언에 리턴 타입이 있을 경우에는 return 문 뒤에 리턴값을 추가로 지정해야 한다.

return 리턴값;

 

return 문 이후에 실행문을 작성하면 컴파일 에러가 발생한다. 왜냐하면 return 문 이후의 실행문은 결코 실행되지 않기 때문이다.

 

메서드 오버로딩

메서드 오버로딩은 메서드 이름은 같되 매개변수의 타입, 개수, 순서가 다른 메서드를 여러 개 선언하는 것을 말한다. 메서드 오버로딩의 목적은 다양한 매개값을 처리하기 위해서 이다.

int plus(int x, int y) {
	int result = x + y;
    return result;
    }

 

위 코드는 int 타입 매개값만 처리할 수 있다. 만약 double 타입 값도 처리하고 싶다면 다음과 같이 오버로딩 하면 된다.

double plus(double x, double y) {
	double result = x + y;
    return result;
    }

 

'Language > JAVA' 카테고리의 다른 글

[JAVA] final 필드와 상수  (0) 2024.09.04
[JAVA] 인스턴스 멤버와 정적 멤버  (0) 2024.09.04
[JAVA] 생성자  (2) 2024.09.04
[JAVA] 필드  (0) 2024.09.04
[JAVA] 클래스  (0) 2024.09.04