메소드는 자바에서 클래스의 멤버 중 하나로 기능을 표현한다. 클래스에서 메소드를 사용하면 중복되는 코드의 사용을 줄일 수 있다. 또한 프로그램에서 문제가 발생하거나 기능의 변경이 필요할 때 손쉽게 유지보수를 할 수 있다.
✔️ 한마디로 일하는 것!
해당 메소드에 접근할 수 있는 범위를 명시한다.
접근제한자의 종류는 다음과 같다.
메소드가 모든 작업을 마치고 반환하는 결과의 데이터 타입을 명시한다.
외부에서 메소드를 호출하면 메소드는 외부에서 값을 입력받아 매개변수에 저장하고 구현부에서 실행하여 리턴값을 다시 돌려주는 역할을 한다.
즉, 반환타입은 메소드를 실행한 후의 결과값 타입이다.
결과값이 없을 수도 있는데 이 경우에는 void를 사용한다. 반환타입에 void타입이라 작성하면 된다. void타입의 경우 원래 구현부에 리턴값이 없다고 써야하나(return;) 생략이 가능하다.즉, void는 리턴값이 없으므로 실행만 하고 끝나는 메소드이다. 다시말해 ,실행메소드라고 할 수 있다 .
리턴값이 있는 경우에는 리턴타입을 선언부에 명시해야 한다. 이때 반환값과 반환타입은 반드시 타입이 일치해야 한다.
리턴값은 메소드를 호출한 곳에 반환된다.
메소드의 기능이 드러나도록 식별자의 규칙에 맞게 이름을 작성해야 한다.
메소드 호출 시에 전달되는 인수의 값을 저장할 변수를 명시한다. 매개변수는 지역변수라고도 한다.
매개변수는 메소드 수행에 필요한 입력값을 저장하는 변수이다.
만약 전화를 거는 작업을 수행하는 메소드가 있다고 하면 전화번호를 입력해야 전화를 거는 작업을 수행할 수 있다. 이때 전화번호를 입력하는 입력값을 파라미터라고 한다.
메소드의 고유 기능을 수행하는 명령문의 집합이다. 실행할 코드를 작성하는 공간이다.
메소드를 호출하기 전에 객체를 생성해야 한다, 필드를 사용할 때와 마찬가지고 필드와 메소드는 객체 안에 있기 때문에 객체가 존재하지 않으면 필드와 메소드 역시 존재하지 않기 때문이다.
✅ 객체참조변수명.메소드명(); ✅ 객체참조변수명.메소드명(인수1, 인수2, …);객체를 생성했으면 메소드는 객체 참조 연산자(.)를 사용하여 호출할 수 있다.
매개변수가 없는 경우 괄호안에 아무것도 넣지 않아도 되지만 매개변수가 있는 경우에는 인자를 넣어야 한다.
👏 메소드 호출은 다음 예제를 통해 이해하면 좋다.
public class A{
// 1) 클래스A에 sum메소드 선언
public int sum(int a, int b){
int rs= System.out.println(a + b);
retrun rs;
}
}
public static void main(String[] args) {
// 2) 실행메소드에서 sum메소드 호출
A a = new A();
a.sum(100, 200);
}
A클래스에 모든 클래스와 패키지에서 자유롭게 사용할 수 있고(public) 반환타입은 int인 sum메소드를 선언했다. 이 메소드를 호출한 곳에서 int형 데이터를 2개를 받아 a와 b에 저장하고 a와 b를 더한 값을 반환해주는 메소드이다. int형으로 받은 데이터 2개를 더했으므로 return값의 반환타입은 int형이 될 것이므로 반환타입을 int형으로 해준다.
❓ 메인메소드란?
main 메소드는 프로그램이 시작할 때 가장 먼저 실행하는 메소드이다. 자바의 규칙이며 프로그램을 시작할 때 main메소드가 없으면 동작할 수 없다.
📝 이제 main메소드에서 sum메소드를 호출해보자
sum메소드를 호출하기 전에 new연산자를 통해 A클래스 객체를 생성했다. A객체를 생성해야 A객체 안에 있는 sum메소드를 객체 참조 연산자(.)를 통해 호출할 수 있기 때문이다.
인자가 있는 메소드는 반드시 타입에 맞는 인자값도 같이 넣어주어야 한다. 만약 타입이 다르거나 인자 개수에 맞게 넣으면 컴파일 에러가 발생한다.
지금까지 메소드를 선언하고 호출하는 방법을 배웠다. 다음에는 메소드 오버로딩에 대해 배워보자.
신용권, 『혼자공부하는 자』, 한빛미디어(2023)
TCP스쿨, http://www.tcpschool.com/java/java_methodConstructor_method