정적(static)"이라는 키워드가 붙은 변수, 메서드, 초기화 블록은 클래스에 속하는 개념이다 .
하나의 클래스당 하나만 존재 할 수 있으며 클래스 외부에서 호출하여 사용할때 생성자 호출을 하지 않아도 사용할 수 있다는 점이 다르다.
JVM 이 클래스를 로드할 때 메모리가 할당되고, 프로그램이 종료될 때까지 유지된다 (static 의 생명주기)
객체이름.메서드()this 키워드 사용java
복사
Counter c1 = new Counter(); // 객체 생성
c1.printCounts(); // 객체를 통해 메서드 호출
클래스이름.메서드()this 키워드를 사용할 수 없다 .Counter.printTotalCount(); // 객체 생성 없이 클래스 이름으로 직접 호출
@RequiredArgsConstructor 의존성 주입 패턴을 주로 사용한다
Spring 같은 프레임워크는 의존성 주입을 통해 객체 간의 결합도를 낮추는데,
static 메서드는 이런 의존성 주입 패턴과 맞지 않는다 .
객체 지향 프로그래밍의 특성
implements UserService), 인터페이스는 정적 메서드를 가질 수 없음 (Java 8 이전).List.of(), Entity.from()public static final String API_VERSION = "v1"