정적변수
클래스 안에 있는 변수를 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 |
자바 기본프로그래밍 (3) (0) | 2017.05.20 |