더북(TheBook)

2.4.4 정적 메서드


정적 메서드는 객체에 작동하지 않는 메서드다. 예를 들어 Math 클래스의 pow 메서드는 정적 메서드다. 다음 표현식은 xa을 계산한다.

Math.pow(x, a)


이 메서드는 작업을 수행할 때 Math 객체를 전혀 사용하지 않는다. 1장 기본 프로그래밍 구조에서 살펴본 것처럼 정적 메서드는 static 제어자로 선언한다.

public class Math {

    public static double pow(double base, double exponent) {

        ...

    }

}


pow를 왜 인스턴스 메서드로 만들지 않을까? 자바에서 기본 타입은 클래스가 아니므로 double의 인스턴스 메서드가 될 수 없다. Math 클래스의 인스턴스 메서드로 만들 수도 있었지만, 그랬다면 pow 메서드를 호출하려고 Math 객체를 생성해야 했을 것이다.

정적 메서드를 사용하는 또 다른 이유는 다른 사람이 만든 클래스에 부가 기능을 제공하는 것이다. 예를 들어 주어진 범위에 속한 임의의 정수를 돌려주는 메서드가 있다면 멋지지 않을까? 표준 라이브러리에 있는 Random 클래스에 메서드를 추가할 수는 없다. 하지만 다음과 같이 정적 메서드는 만들 수 있다.

public class RandomNumbers {

    public static int nextInt(Random generator, int low, int high) {

        return low + generator.nextInt(high - low + 1);

    }

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.