C# 정적 클래스란?
C#에서 정적 클래스(static class)는 인스턴스를 생성할 수 없으며, 오직 정적(static) 멤버만 포함할 수 있는 특수한 클래스입니다. 정적 클래스는 자동으로 sealed 처리되어 상속이 불가능하고, 인스턴스 생성자(instance constructor)를 가질 수 없습니다.
정적 클래스의 주요 특징
- 인스턴스화 불가:
new키워드로 객체를 생성할 수 없습니다. - 정적 멤버만 허용: 모든 필드, 메서드, 속성은 반드시
static으로 선언해야 합니다. - 상속 불가(sealed): 다른 클래스가 정적 클래스를 상속할 수 없습니다.
- 인스턴스 생성자 없음: 필요하다면 정적 생성자(static constructor)만 사용할 수 있습니다.
다음은 정적 클래스와 정적 멤버를 활용한 간단한 예제입니다.
예제 코드
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));
}
}
실행 결과
PI: 3.14
Square: 9
위 예제에서 정적 클래스는 다음과 같이 선언되어 있습니다.
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.PI, Demo.calc()처럼 클래스 이름을 통해 멤버에 직접 접근할 수 있으며, 별도의 객체 생성 없이 상수 값이나 유틸리티 기능을 제공하는 용도로 널리 활용됩니다. 대표적인 예로 C# 표준 라이브러리의 Math 클래스가 정적 클래스 방식으로 설계되어 있습니다.