Java

[Java] static class와 static method

parangofsky 2026. 1. 16. 23:52

static 키워드란?
프로그래밍에서 "객체(인스턴스)에 속하지 않고 클래스 자체에 속한다"는 의미. 하지만 static class와 static method는 사용 목적과 범위에서 차이가 있다.


1. Static Method (정적 메서드)

정적 메서드는 객체를 생성하지 않고도 클래스 이름을 통해 바로 호출할 수 있는 함수.

특징:

- 메모리의 스태틱 영역에 상주하여 프로그램 종료 시까지 유지된다.

- 인스턴스 변수(non-static field)에 접근할 수 없으며, 오직 정적 변수만 사용할 수 있다.

- 공통 유틸리티 함수를 만들 때 주로 사용됩니다. (예: Math.abs(), Integer.parseInt())


2. Static Class (정적 클래스)

static class는 언어마다 의미가 약간 다를 수 있지만, 주로 Java의 정적 내부 클래스 (C#에서는 인스턴스화가 불가능한 클래스를 의미)

특징 (Java 기준):

- 클래스 내부의 클래스(내부 클래스)에 static이 붙은 형태.

- 외부 클래스의 인스턴스 생성 없이도 내부 클래스의 객체를 생성할 수 있다.

- 외부 클래스의 인스턴스 멤버에는 접근할 수 없고, 정적 멤버에만 접근 가능합니다.

사용 목적: 외부 클래스와 밀접한 관련이 있는 보조 클래스를 그룹화할 때 사용하며, 메모리 누수(Memory Leak) 방지를 위해 일반 내부 클래스보다 권장된다.

일반 내부 클래스(static이 없는)는 외부 클래스를 항상 참조하고 있어서 메모리 관리가 까다롭지만, static을 붙이면 깔끔하게 독립된 클래스처럼 동작한다고 보면 된다.


큰 차이점을 보자면
호출/생성 시
클래스명.메서드()
new 클래스명.중첩클래스()
라고 보면 된다.

'Java' 카테고리의 다른 글

[Java] Synchronized에 대해  (0) 2026.01.23
[Java] static - 2  (0) 2026.01.18
[Java] 리플렉션(Reflection)  (0) 2026.01.13
[Java] 인터페이스와 추상클래스  (0) 2026.01.10
[Java] 객체지향 - final 2  (0) 2026.01.09