C# 정적 클래스의 기본 개념
C#에서 정적(static) 클래스는 인스턴스화(instantiation)할 수 없는 특수한 형태의 클래스입니다. 즉, new 키워드를 사용해 객체를 생성할 수 없으며, 오직 정적 멤버(static members)만 포함할 수 있습니다.
또한 정적 클래스는 자동으로 봉인(sealed) 상태가 되어 다른 클래스가 상속할 수 없으며, 인스턴스 생성자(instance constructor)를 가질 수 없다는 중요한 특징이 있습니다.
정적 클래스의 주요 특징
정리하면 C# 정적 클래스는 다음과 같은 특성을 가집니다:
- 인스턴스를 생성할 수 없습니다.
- 모든 멤버는 반드시 static으로 선언되어야 합니다.
- 암시적으로 sealed이므로 상속이 불가능합니다.
- 인스턴스 생성자를 포함할 수 없습니다.
C# 정적 클래스 예제 코드
아래 예제는 정적 클래스와 정적 멤버를 함께 사용하는 방법을 보여줍니다:
using System;
public static class Demo {
public static float PI = 3.14f;
public static int calc(int n){ return n*n; }
}
class Program {
public static void Main(string[] args) {
Console.WriteLine("PI: " + Demo.PI);
Console.WriteLine("Square: " + Demo.calc(3));
}
}예제 코드 분석
위 코드에서 정적 클래스 부분은 다음과 같습니다:
public static class Demo {
public static float PI = 3.14f;
public static int calc(int n){ return n*n; }
}그리고 이 클래스 내부에는 아래와 같은 정적 멤버들이 선언되어 있습니다:
public static float PI = 3.14f;
public static int calc(int n){ return n*n; }Demo 클래스는 정적 클래스이기 때문에 객체를 만들지 않고도 클래스 이름을 통해 직접 Demo.PI와 Demo.calc(3)처럼 멤버에 접근할 수 있습니다. 실행 결과는 PI 값인 3.14와 3의 제곱값인 9가 출력됩니다.
정적 클래스를 활용하는 경우
정적 클래스는 주로 유틸리티 함수, 상수 값, 확장 메서드 컨테이너 등 프로그램 전반에서 공통으로 사용되는 기능을 묶어둘 때 유용합니다. 대표적인 예로 .NET의 System.Math 클래스가 있으며, 이 역시 별도의 인스턴스 생성 없이 Math.PI, Math.Sqrt() 등의 정적 멤버를 바로 사용할 수 있습니다.