코딩하는 코커두드/JAVA

[JAVA 기초] 메서드(method)

코커두드 2024. 4. 26. 00:49

 

객체지향을 제대로 공부해보기로 마음먹고, 기본적인 개념부터 차근차근 학습하기로 다짐하였습니다.

오늘 알아볼 주제는 메서드입니다.

 

1. 메서드란?

수학의 함수와 유사한 메서드는 하고자 하는 작업을 수행하도록 하나의 로직으로 만든 것입니다.

예를들어 두 개의 정수를 입력하여 더하는 작업을 수행하려고 합니다.

작업을 한 번만 하는 경우에는 다음과 같이 하면 됩니다.

package method;

import java.util.Scanner;

public class Method {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //결과1
        int a = sc.nextInt();
        System.out.println("첫 번째 수는: " + a + " 입니다.");
        int b = sc.nextInt();
        System.out.println("두 번째 수는: " + b + " 입니다.");

        int sum1 = a + b;
        System.out.println("결과1의 두 수의 합은: " + sum1);
    }
}

 

 

하지만 두 종류의 서로 다른 계산을 반복적으로 수행하려면 다음과 같이 하게 됩니다.

package method;

import java.util.Scanner;

public class Method {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //결과1
        int a = sc.nextInt();
        System.out.println("첫 번째 수는: " + a + " 입니다.");
        int b = sc.nextInt();
        System.out.println("두 번째 수는: " + b + " 입니다.");

        int sum1 = a + b;
        System.out.println("결과1의 두 수의 합은: " + sum1);

        //결과1
        int x = sc.nextInt();
        System.out.println("첫 번째 수는: " + x + " 입니다.");
        int y = sc.nextInt();
        System.out.println("두 번째 수는: " + y + " 입니다.");

        int sum2 = x + y;
        System.out.println("결과2의 두 수의 합은: " + sum2);
    }
}

 

위에서 거슬리는 점이 보이시나요? 일단 구조적으로 좋지 않고 재사용성이 낮습니다.

그리고 계산을 많이 할수록 불필요한 코드의 중복이 다수 발생하며,

계산 로직을 추가할 때에 복사 붙여넣기를 잘못할 경우 의도치 않은 버그가 발생할 수도 있습니다.

 

 

이럴 때에 계산 로직을 하나의 함수로 만들어 메서드로 사용할 수 있습니다.

아래는 두 수의 합을 메서드로 만든 예시입니다.

import java.util.Scanner;

public class Method {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        int sum = addLogic(a, b);
        System.out.println("두 수의 합은: " + sum + "입니다.");
    }

    public static int addLogic(int a, int b) {
        System.out.println("첫 번째 수는: " + a + " 입니다.");
        System.out.println("두 번째 수는: " + b + " 입니다.");
        return a + b;
    }
}

 

메서드를 사용할 때에는 몇 가지 주의사항이 있습니다.

 

public static int result(int a, int b) {} 와 같이 반환타입이 정수로(int) 명시적으로 주어진 경우와 달리 반환타입이 없는 경우에는 public static void result(int a, int b) {} 와 같이 void를 적어야합니다.  

달리 말하자면, 반환타입이 void가 아닌 경우에는 반드시 return 문이 메서드 내에 있어야 합니다.

 

그리고 반환타입이 정수인 int인 경우 괄호 안의 매개변수는 int여야 하며 double이 될 수 없습니다. 형변환(casting)이 자동으로 되지 않기 때문입니다.

반면, 반대의 경우인 반환타입이 double인 경우에는 매개변수로 int를 사용하는 것이 가능합니다. 자동 형변환(casting)이 가능하기 때문입니다.

 

또한 메서드의 이름이 같으며, 매개변수의 타입이 모두 동일하면 동일 메서드로 봅니다.

 

내일은 객체지향을 좀 더 학습하여 커피 키오스크 예제를 다루어보고자 합니다.

부족한 내용은 키오스크 예제를 만들어나가며 추가하도록 하겠습니다.