Java
메소드(method)


메소드는 객체의 동작에 해당하는 중괄호{ } 블록을 말한다.

메소드는 객체 간의 데이터 전달의 수단으로 사용된다. 외부로부터 매개값을 받을 수 도있고, 실행 후 어떤 값을 리턴할 수도 있다.


메소드 선언은 선언부(리턴타입, 메소드이름,매개변수선언)와 실행 블록으로 구성된다.


리턴타입 메소드이름( [ 매개변수선언, ... ] ) {
실행할 코드를 작성하는 곳
}


리턴타입은 메소드가 실행 후 리턴하는 값의 타입을 말한다. 메소드는 리턴값이 있을 수도 있고 없을 수도 있다. 메소드가 실행 후 결과를 호출한 곳에 넘겨줄 경우에는 리턴 값이 있어야 한다.


예를 들어 전자계산기 객체에서 전원을 켜는 powerOn() 메소드와 두 수를 나누는 기능인 divide() 메소드가 있다고 가정해보자. divide() 메소드는 나눗셈의 결과를 리턴해야 하지만 powerOn() 메소드는 전원만 켜면 그만이다. 따라서 powerOn() 메소드는 리턴값이 없고, divide() 메소드는 리턴값이 있다고 봐야 한다.


void powerOn() { ... }
double divide(int x,int y){ ... }

위의 두 메소드는 다음과 같이 호출할 수 있다.


powerOn();
double result = divide(10,20);


메소드 이름은 자바 식별자 규칙에 맞게 작성하면 되는데, 다음 사항에 주의하면 된다.

숫자로 시작하면 안 되고,$와 _를 제외한 특수 문자를 사용하지 말아야 한다.

관례적으로 메소드명은 소문자로 작성한다.

void run() { }
void startEngine() { }
String getName() { }
int[] getScores() { }


매개 변수는 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용된다. 매개 변수도 필요한 경우가 있고 필요 없는 경우가 있다. powerOn() 메소드는 그냥 전원만 켜면 그만이기 때문에 매개변수가 필요없고 divide() 메소드는 나눠야 하기 때문에 매개 변수가 2개 필요하다.

double divide(int x, int y) {...}
double result = divide(10,20);


호출 시 넘겨준 매개값인 10과 20은 해당 위치의 매개 변수인 x와y에 각각 저장되고, 이 매개 변수들을 이용해서 메소드 블록을 실행하게 된다. 매개값은 반드시 매개변수의 타입에 부합되는 값이여야한다.

[Calculator.java] 메소드 선언
public class Calculator {
//메소드
void powerOn() {
System.out.println("전원을 켭니다.");
}
int plus(int x, int y) {
int result = x + y;
return result;
}
double divide(int x, int y) {
double result = (double)x / (double)y;
return result;
}
void powerOff() {
System.out.println("전원을 끕니다");
}
}



[CalculatorExample.java] 메소드 호출
public class CalculatorExample {
public static void main(String[] args) {
Calculator myCalc = new Calculator();
myCalc.powerOn();
int result1 = myCalc.plus(5, 6);
System.out.println("result1: " + result1);
byte x = 10;
byte y = 4;
double result2 = myCalc.divide(x, y);
System.out.println("result2: " + result2);
myCalc.powerOff();
}
}

외부 클래스에서 Calculator 클래스의 메소드를 호출하기 위해서는 다음 예제와 같이 Calculator 객체를 생성하고 참조 변수인 myCalc를 이용해야 한다.


[출처] 메소드(Method)|작성자 yous3163

댓글 0