질문 119 · 실전 면접 답변
static 멤버는 인스턴스 멤버와 어떻게 다른가요?
이렇게 답해 보세요 (핵심 답변)
인스턴스 멤버는 new로 생성된 각각의 객체에 속해 개별 인스턴스의 상태를 다루는 반면, static(정적) 멤버는 개별 인스턴스가 아니라 클래스 생성자 객체 자체에 속하는 프로퍼티와 메서드입니다. 따라서 인스턴스를 생성하지 않고도 ClassName.method() 형태로 바로 호출할 수 있으며, 주로 팩토리 메서드(예: User.fromJson())나 클래스 전반에서 공유하는 상수·유틸리티 로직을 정의할 때 사용합니다. 다만 변경 가능한 상태를 static 프로퍼티에 두면 애플리케이션 전체에서 공유되는 전역 상태처럼 동작하므로 주의해야 합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 인스턴스 메서드 안의 this는 호출한 인스턴스를 가리키지만, static 메서드 안의 this는 클래스(생성자 객체) 자신을 가리킵니다.
- 특정 클래스의 내부 private 필드나 생성자 정책과 직접 연결될 필요가 없는 순수 유틸리티라면 static 메서드보다 일반 모듈 함수로 분리하는 편이 더 간결합니다.
면접에서 자주 하는 실수
서버 사이드 렌더링(SSR)이나 여러 컴포넌트가 함께 쓰는 환경에서 static 프로퍼티에 요청별·사용자별 상태를 저장하면 데이터가 서로 섞이는 버그가 발생합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 119번을 바탕으로 질문과 답변을 새로 정리했습니다.