Skip to content

Latest commit

 

History

History
28 lines (17 loc) · 3.23 KB

File metadata and controls

28 lines (17 loc) · 3.23 KB

Static 클래스에 대해

오늘은 static 클래스에 대해 정리해보고자 한다. static 클래스는 주로 Java와 C# 같은 객체지향 언어에서 특정한 용도로 자주 사용된다. 다른 클래스나 인스턴스에 의존하지 않고 독립적으로 동작해야 하는 유틸리티성 메서드나 상수 등을 포함할 때 유용하다.

1. Static 클래스란?

static 클래스는 인스턴스를 생성하지 않고도 사용할 수 있는 클래스이다. 클래스와 클래스 내 메서드, 변수에 static 키워드를 붙이면 해당 클래스와 멤버들은 객체 생성 없이도 접근할 수 있다. 주로 정적 유틸리티 메서드상수를 정의할 때 사용되며, 애플리케이션 전역에서 일정한 값을 유지하거나 반복적인 계산을 수행하는 데 적합하다.

Java에서는 일반 클래스가 아닌 내부 클래스에 static 키워드를 붙여 독립적인 클래스로 사용할 수 있다.

예시

  • Java의 Math 클래스: Math 클래스는 객체 생성 없이 Math.pow()와 같은 메서드를 바로 사용할 수 있다. Math 클래스는 내부 메서드가 모두 static으로 선언되어 있기 때문에 인스턴스를 생성하지 않고도 언제나 일정한 동작을 수행한다.

2. Static 클래스의 장점

  • 메모리 효율성: static 멤버는 클래스당 하나만 메모리에 생성되므로 인스턴스마다 메모리를 할당할 필요가 없다. 이를 통해 메모리 사용을 줄일 수 있다.
  • 간편한 접근성: 객체를 생성하지 않고 클래스 이름을 통해 직접 접근할 수 있으므로, 코드가 간결해지고 유틸리티 메서드나 상수 사용이 편리해진다.
  • 전역적으로 일정한 값 유지: static 변수는 애플리케이션의 모든 인스턴스에서 동일한 값을 참조하므로, 설정 값이나 상태를 전역적으로 공유할 때 유용하다.

3. Static 클래스의 단점

  • 테스트 어려움: static 멤버는 전역 상태로 존재하므로, 의존성 주입을 통한 테스트가 어렵다. static 메서드는 상태를 변경하지 않는 순수 함수로 유지하는 것이 좋다.
  • 메모리 누수 가능성: static 변수는 애플리케이션이 종료될 때까지 메모리에 남아 있으므로, 메모리 누수로 이어질 수 있다. 이를 방지하기 위해 필요 이상으로 static 변수를 사용하지 않는 것이 중요하다.
  • 객체지향적이지 않음: static 클래스는 객체 지향의 기본 원칙인 캡슐화와 다형성을 위반할 수 있다. 모든 메서드가 공통된 동작을 수행해야 하므로, 다형성을 활용해야 할 상황에서는 적합하지 않다.

결론

static 클래스는 독립적인 유틸리티 메서드나 전역 상수를 정의할 때 유용하며, 메모리 효율성과 간편한 접근성 측면에서 강력한 도구가 된다. 하지만 전역 상태 관리의 어려움과 객체지향적 설계에서 제한이 있을 수 있다는 점을 고려하여 신중하게 사용하는 것이 중요하다. static 클래스의 장단점을 이해하고 적절한 상황에서 활용함으로써 코드의 유지보수성과 효율성을 높일 수 있다.