..

Search

29) 메소드의 개념

29) 메소드의 개념

메소드의 개념


메소드(method)

자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가집니다.

그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.


메소드의 사용 목적

클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문입니다.

또한, 모듈화로 인해 코드의 가독성도 좋아집니다.

그리고 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 됩니다.

 

메소드를 작성할 때는 되도록 하나의 메소드가 하나의 기능만을 수행하도록 작성하는 것이 좋습니다.

메소드 정의

클래스에서 메소드를 정의하는 방법은 일반 함수를 정의하는 방법과 크게 다르지 않습니다.

 

자바에서 메소드를 정의하는 방법은 다음과 같습니다.

문법

접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부

    // 구현부

}

 

1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시합니다.

2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다.

3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시합니다.

4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다.

5. 구현부 : 메소드의 고유 기능을 수행하는 명령문의 집합입니다.

 

메소드 시그니처(method signature)란 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킵니다.

만약 두 메소드가 매개변수의 개수와 타입, 그 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같다고 할 수 있습니다.

 

다음 예제는 Car 클래스의 accelerate() 메소드를 정의하는 예제입니다.

예제

class Car {

    private int currentSpeed;

    private int accelerationTime;

    ...

  public void accelerate(int speed, int second) { // 선언부

        // 구현부

        System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");

    }

    ...

}

 

위 예제의 ①번 라인에서는 accelerate() 메소드를 정의하고 있습니다.

이 메소드는 public 접근 제어자를 사용하여 선언되어 해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있습니다.

반환 타입에는 어떠한 값도 반환하지 않는다는 의미를 가진 void를 명시합니다.

그 다음으로 메소드의 이름을 명시하고, 매개변수로 int형 변수인 speed와 second를 전달받습니다.

이렇게 전달받은 매개변수를 가지고 메소드 구현부에서 고유한 작업을 수행할 수 있는 것입니다.


메소드 호출

자바에서 위와 같은 방법으로 정의한 메소드는 멤버 참조 연산자(.)를 사용하여 호출할 수 있습니다.

 

자바에서 메소드를 호출하는 방법은 다음과 같습니다.

문법

1. 객체참조변수이름.메소드이름();                  // 매개변수가 없는 메소드의 호출

2. 객체참조변수이름.메소드이름(인수1, 인수2, ...); // 매개변수가 있는 메소드의 호출

 

다음 예제는 앞서 정의한 accelerate() 메소드를 호출하는 예제입니다.

예제

Car myCar = new Car();   // 객체를 생성함.

myCar.accelerate(60, 3); // myCar 인스턴스의 accelerate() 메소드를 호출함.

 

다음 예제는 실제로 accelerate() 메소드를 정의하고 호출하는 예제입니다.

예제

class Car {

    private int currentSpeed;

    private int accelerationTime;

 

    public void accelerate(int speed, int second) {

        System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");

    }

}

 

public class Method01 {

    public static void main(String[] args) {

        Car myCar = new Car();   // 객체 생성

        myCar.accelerate(60, 3); // 메소드 호출

    }

}

코딩연습 ▶

실행 결과

3초간 속도를 시속 60(으)로 가속함!!


연습문제