본문 바로가기
Java/객체지향 프로그래밍 기초

4. 메서드(Method)

by mozzi329 2022. 7. 8.
728x90
 

 

     

    📌 Goal

    • 객체의 기능을 정의하는 메서드를 이해하고, 메서드의 구성요소와 호출에 대해 설명할 수 있다.
    • 메서드 오버로딩을 이해하고 그 장점을 설명할 수 있다.

     

    📌 메서드(Method)

    “특정 작업을 수행하는 일련의 명령문들의 집합"을 의미하며, 클래스의 기능에 해당하는 내용들을 담당

    메서드는 다시 크게 머리에 해당하는 메서드 시그니처(method signature)와 몸통에 해당하는 메서드 바디(method body)로 구분할 수 있다.

     

    자바제어자 반환타입 메서드명(매개 변수) { // 메서드 시그니처
    	메서드 내용 // 메서드 바디
    }
    
    ▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾▾
    
    public static int add(int x, int y) { // 메서드 시그니처
    	int result = x + y; // 메서드 바디
    	return result;
    }

     

    메서드의 시그니처

    • 순서대로 해당 메서드가 어떤 타입을 반환하는가(반환 타입)
    • 메서드 이름이 무엇(메서드명)이며 해당 작업을 수행하기 위해서 어떤 재료들이 필요한지(매개 변수)

    메서드 바디

    • 괄호({}) 안에 해당 메서드가 호출되었을 때 수행되어야하는 일련의 작업들을 표시
    • 메서드의 반환타입이 void가 아닌 경우에는 메서드 바디({} )안에 반드시 return 문이 존재해야함

     

    📌 메서드의 호출

    클래스 내에 구현된 메서드는 포인트 연산자(.)를 통해 메서드를 호출

    메서드도 클래스의 멤버이므로 클래스 외부에서 메서드를 사용하기 위해서는 먼저 인스턴스를 생성해야한다. 반면, 클래스 내부에 있는 메서드끼리는 따로 객체를 생성하지 않고도 서로를 호출할 수 있다.

     

    메서드이름(매개변수1, 매개변수2, ...); // 메서드 호출방법. 매개 변수가 없을 수도 있음.
    
    void printHello(); // 위의 코드 예제 호출
    int getNumSeven();
    Double multiply(4, 4.0);
    
    //출력값
    hello!
    7
    16.0

    메서드 호출 시 괄호() 안에 넣어주는 입력 값을 우리는 ‘인자(argument)’ 혹은 매개 변수라고 하는데, 인자의 개수와 순서는 반드시 메서드를 정의할 때 선언된 매개 변수와 일치되어야 한다.

     

    📌 메서드 오버로딩(Method Overloading)

    하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것을 의미

    영어로 “overload”의 사전적 의미가 ‘과적하다/ 부담을 지우다’라는 것을 생각해보면 좀 더 연상하기 쉽다. 보통 하나의 메서드에 하나의 기능만을 구현해야하는데, 같은 이름의 메서드를 여러 기능을 구현하기 때문에 오버로딩이란 용어를 사용한 것이라 생각하면 된다. 단, 무조건 같은 메서드명을 사용한다고해서 오버로딩이 되는 것이 아니다.

     

    ✔️ 오버로딩이 성립하기 위한 두 가지 조건

    첫째, 메서드의 이름이 같아야 한다.

    둘째, 매개변수의 개수 또는 타입이 달라야 한다.

     

    ✔️ 메서드 오버로딩의 장점

    • 하나의 메서드로 여러 경우의 수를 해결할 수 있다. (객체지향 프로그래밍 - 다형성)
    • 하나의 메서드 이름으로 기억되면 기억하기 슆고, 이름도 짧게 할 수 있어 오류의 가능성을 줄일 수 있다.
    • 메서드의 이름을 절약할 수 있다.

    댓글