본문 바로가기
Java & Kotlin/Java

9. 메서드, 함수 (Function, 오버로딩)

by heekng 2021. 1. 19.
반응형
 

java에서의 메서드에 대하여 알아보겠습니다.

메서드는 반복되는 기능들을 쉽게 관리하고, 코드를 줄이기 위하여 사용합니다.

메서드는 클래스와 메인 사이에서 선언되어야 하며 static 결과값의자료형 함수명 (입력값의자료형 변수명){} 으로 선언할 수 있습니다.

public class Test{

static void function() {

System.out.println("function 메소드 실행 완료");

}

public static void main(String[] args) {

function();

}

}

위 코드를 보시면 메인 밖에서 funcion이라는 함수를 정의하고 메인에서 함수만을 입력하였지만 실행시에 콘솔에서는 "funcion 메소드 실행 완료" 라는 문자열이 제대로 출력됨을 확인할 수 있습니다.

위에서 선언한 메서드는 static void function(){} 인데 이때 각각을 언급하면

static : 객체와 무관하게

void : 리턴값이 없다(코드 그 자체를 실행한다)

function : 메서드의 이름

() : 매개변수가 없다.

입니다.

void의 위치에는 int, String, char 등의 자료형이 대체될 수 있고 이 때에는 메서드의 실행문장 내에 return에 해당하는 자료형에 맞게 출력할 코드를 작성하여야 합니다.

메서드이름 뒤의 괄호안에는 외부에서 받아올 값(매개변수)를 입력하며 매개변수의 개수에는 제한이 없습니다.

메서드의 이용 예시)

public class Test{

static int sum(int x, int y) { // 두 값을 더하는 메서드

// 리턴값이 정수이며 매개변수로 정수 두개를 받아와야 사용 가능하다.

int z = x + y; // x+y의 결과값을 정수형인 z에 넣어준다.

return z; // 정수인 z를 return해준다.

}

public static void main(String[] args) {

int num1 = 4; // 1번째 정수

int num2 = 9; // 2번째 정수

int result = sum(num1, num2); // num1과 num2를 sum함수에 넣고 나온 결과값을 result에 넣어준다.

 

System.out.println(result);

}

}

위와 같이 하나의 메서드를 선언하면 복잡한 연산, 코드더라도 메서드 안에서 구현해준다면 같은 코드를 다시 이용하지 않더라도 메서드 하나만으로도 쉽게 사용할 수 있습니다.


메서드의 선언 순서

1. 메서드명을 생각한다.

2. 매개변수를 생각한다.

3. 실행할 문장과 리턴값을 생각한다.

메서드 주의사항

1. 매개변수가 없는 메서드는 외부에서 값을 전달받아야 한다.

2. 리턴값이 없는 메서드는 사용시 전체를 리턴값으로 보자.

3. 메서드 내부에 다른 메서드를 선언할 수 없다. (단, 사용은 가능하다.)

4. 메서드 선언시 매개변수는 저장공간이고, 사용시에는 값을 자리 순서에 맞게 넣어준다. (ex. 메서드 선언시 매개변수를 String, int 순서로 선언했다면 메서드 이용시에도 String, int 순서로 넣어야 한다.)

5. 메서드를 선언한 클래스 외의 클래스에서 메서드를 이용하려면 클래스 K = new 클래스();의 방법으로 메서드가 존재하는 클래스를 선언한 뒤에 K.메서드 를 이용해야 한다.

메서드의 장점

1. 코드의 재사용성 증가

2. 오류의 파급효과가 줄음

3. 비용 절감

4. 코드의 간결화


메서드 오버로딩

메서드는 같은 이름을 가진 메서드라도 매개변수를 다르게 선언할 수 있습니다. 이를 메서드 오버로딩이라 합니다.

메서드 오버로딩을 하려면 두가지 조건이 있는데, 첫번째는 입력값의 개수가 다르거나 입력값의 자료형이 다를때 이용 가능합니다.

입력값의 자료형이 다른 경우)

public class Test{

static int sum(int x, int y) { // 두 값을 더하는 메서드

// 리턴값이 정수이며 매개변수로 정수 두개를 받아와야 사용 가능하다.

int z = x + y; // x+y의 결과값을 정수형인 z에 넣어준다.

return z; // 정수인 z를 return해준다.

}

static double sum(double x, double y) {

double z = x+y;

return z;

}

public static void main(String[] args) {

int x1 = 5;

int y1 = 1;

System.out.println(sum(x1, y1));

 

double x2 = 6.4;

double y2 = 1.9;

System.out.println(sum(x2, y2));

}

}

위에서 보듯이 sum이라는 메서드를 정수형일때와, 실수형일때 두가지로 선언하고 메인안에서 정수일 때와 실수일 때 두가지의 경우로 이용했지만 정상적으로 출력됨을 확인할 수 있습니다.

입력값의 개수가 다른 경우)

public class Test{

static int sum(int x, int y) { // 두 값을 더하는 메서드

// 리턴값이 정수이며 매개변수로 정수 두개를 받아와야 사용 가능하다.

int result = x + y; // x+y의 결과값을 정수형인 result에 넣어준다.

return result; // 정수인 result를 return해준다.

}

static int sum(int x, int y, int z) {

int result = x+y+z;

return result;

}

public static void main(String[] args) {

int x = 5;

int y = 1;

System.out.println(sum(x, y));

 

int z = 7;

System.out.println(sum(x, y, z));

}

}

위처럼 sum 함수를 두개의 정수형 매개변수를 받고, 오버로딩하여 세개의 정수를 매개변수로 받는 함수로도 선언하였다면 실제 메서드 이용시에도 매개변수를 두개 또는 세개로 사용 가능합니다.

반응형

'Java & Kotlin > Java' 카테고리의 다른 글

12. Static  (0) 2021.01.19
11. 열거형 (Enum)  (0) 2021.01.19
10. 클래스 (Class, 생성자)_1  (0) 2021.01.19
8. 배열 (Array)  (0) 2021.01.19
7. 반복문 (for문, while문, do-while문, 디버깅표)  (0) 2021.01.18
6. 조건문  (0) 2021.01.18