본문 바로가기

Java/JAVA

정적 변수와 정적메서드

반응형

정적변수

클래스 안에 있는 변수를 static으로 선언하면 해당 변수는 클래스당 "하나"만 있게 된다.

사실 더 적절한 용어는 '클래스 변수' 라고 할 수 있다.

정적상수

변경 가능한 정적 변수는 드물지만, 정적 상수는 아주 일반적이다.

public static final double PI = 3.14159265358979323846;

정적메서드

public class Math{

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

}

Math클래스의 pow메서드는 정적 메서드다. 왜 인스턴스 메서드로 만들지 않았을까?

자바에서 기본 타입(8가지)은 클래스가 아니므로 double의 인스턴스 메서드가 될 수 없다.

정적메서드를 사용하는 또 다른 이유는 다른 사람이 만든 클래스에 부가 기능을 제공하는 것이다.

예를 들어 주어진 범위에 속한 임의의 정수를 돌려준 메서드를 만든다면 어떨까?

표준 라이브러리의 Random클래스에 메서드를 추가 할 수 없다. 그러나 정적메서드를 이용하면 위의 메서드를 만들 수 있다.

public class RandomNumbers{

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

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

}

}

팩토리 메서드

정적 메서드는 팩토리메서드를 만드는 데 사용한다.

팩토리메서드는 부모클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식 클래스가 어떤 객체를 생성할지 결정하도록 하는 패턴 

위키에서 가져왔는데 밑줄 친 부분을 잘 이해해보도록 하자. + 다른 블로그들에 팩토리메서드를 잘 설명해 놨다.

반응형

'Java > JAVA' 카테고리의 다른 글

인터페이스 (1)  (0) 2017.05.21
자바 패키지  (0) 2017.05.20
정적 변수와 정적메서드  (0) 2017.05.20
자바 객체지향프로그래밍 - 객체 생성  (0) 2017.05.20
자바 객체지향프로그래밍 - 객체 이용  (0) 2017.05.20
자바 기본프로그래밍 (3)  (0) 2017.05.20